I had a Java class that has a static import for org.junit.Assert.assertEquals which imports a number of signatures including one with arguments String, double, double, double. I also defined in that class a static method named assertEquals with the argument signature String, double, double, double that invoked the JUnit assertEquals. Under Eclipse 3.2.0, the compiler accepted this code and it worked the intuitive way. Under Eclipse 3.2.1, the compiler misidentified my call to the double version of assertEquals as if I were trying to call the double version, and issued an error message complaining about the type mismatch.
I wondered which behaviour was correct, the 3.2.0 or 3.2.1 version. I checked the Java Language Specification and it is silent on the subject. Reading between the lines, however, it would seem that neither the 3.2.0 nor the 3.2.1 behaviour is correct (although 3.2.1 is almost right). The spec does say that if you statically import a type and also define a type with the same name in the class, a compiler error is issued. If I extrapolate that rule to include imported members, then the 3.2.1 behaviour is correct, although I would argue that the error message that it gives is misleading or even wrong. It should give an error message along the lines of "the statically imported method name 'x' conflicts with the definition of 'x' in the class".