通过实验,我发现Java非静态方法覆盖了作用域内所有同名方法,即使在静态上下文中也是如此。甚至不允许参数重载。例如:
import java.util.Arrays;
import static java.util.Arrays.toString;
public class A {
public static void bar(Object... args) {
Arrays.toString(args);
toString(args); //toString() in java.lang.Object cannot be applied to (java.lang.Object[])
}
}
在规范中我找不到关于这个的任何信息。这是一个bug吗?如果不是,有没有理由实现这样的语言呢?
更新:Java 6不能编译这个示例。问题是 - 为什么?
toString()
方法。 - jmj