I believe you're correct: there is no way for a static method to legally hide a method of the same signature in a superinterface. However this isn't a problem with the JLS. Consider the fuller context from
JLS2 8.4.6.2 (or JLS3 8.4.8.2 which says basically the same thing):
If a class declares a static method, then the declaration of that method is said to hide any and all methods with the same signature in the superclasses and superinterfaces of the class that would otherwise be accessible to code in the class. A compile-time error occurs if a static method hides an instance method.
The first sentence defines the term
hide - that doesn't necessarily imply that hiding is always legal. The second sentence specifies a particular circumstance in which hiding is
not legal. All interface methods are instance methods, and so when it says a static method can't hid an instance method, that eliminates hiding of any interface methods. If they hadn't included interfaces in the first sentence, then the second sentence would not have applied, and we'd be left wondering whether or not it's legal to declare a static method with the same signature as a superinterface method.
[ May 01, 2005: Message edited by: Jim Yingst ]