如果你有一个静态导入类到java.lang.Integer
而我的类也有一个静态方法parseInt(String)
那么哪一个方法会调用parseInt("12345")
指向?静态导入方法重叠
在此先感谢!
如果你有一个静态导入类到java.lang.Integer
而我的类也有一个静态方法parseInt(String)
那么哪一个方法会调用parseInt("12345")
指向?静态导入方法重叠
在此先感谢!
如果你在自己的班级内,它会调用你的方法。
如果您在班级之外(并且导入了两个班级),则必须指定要使用的班级。
证明:http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf $ 8和$ 6.3(见注释)
试试这个:
import static java.lang.Integer.parseInt;
public class Test {
public static void main(String[] args) {
System.out.println(parseInt("12345"));
}
private static int parseInt(String str) {
System.out.println("str");
return 123;
}
}
结果:
str
123
在你类中的方法是首先执行。
您能否显示一个参考文献,指出标准保证是这种情况?它可能是依赖于编译器的... – amit 2012-01-02 12:06:01
等待sm1回复amit – MozenRath 2012-01-02 12:14:59
从Java语言规范$ 8:成员(§8.2)的范围(§6.3)是成员的类声明的整个主体所属。 |从6.3美元起:声明的范围是声明中声明的实体可以使用简单名称引用的程序区域(假设它是不可见的(§6.3.1))。 – Paranaix 2012-01-02 12:22:49