6

如果你有一个静态导入类到java.lang.Integer而我的类也有一个静态方法parseInt(String)那么哪一个方法会调用parseInt("12345")指向?静态导入方法重叠

在此先感谢!

回答

6

如果你在自己的班级内,它会调用你的方法。
如果您在班级之外(并且导入了两个班级),则必须指定要使用的班级。

证明:http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf $ 8和$ 6.3(见注释)

+0

您能否显示一个参考文献,指出标准保证是这种情况?它可能是依赖于编译器的... – amit 2012-01-02 12:06:01

+0

等待sm1回复amit – MozenRath 2012-01-02 12:14:59

+2

从Java语言规范$ 8:成员(§8.2)的范围(§6.3)是成员的类声明的整个主体所属。 |从6.3美元起:声明的范围是声明中声明的实体可以使用简单名称引用的程序区域(假设它是不可见的(§6.3.1))。 – Paranaix 2012-01-02 12:22:49

5

试试这个:

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 

在你类中的方法是首先执行。

+2

您能否显示一个引用,表明它是由标准保证的吗?它可能是编译器依赖... – amit 2012-01-02 12:05:32

+1

+1我喜欢这个证明。 – Bohemian 2012-01-02 12:08:57