我正在上的两堂课是这样的。
public class Class1 {
public static void staticMethod1(){}
public static void staticMethod2(){}
public static void commonStaticMethod(){}
}
第 2 类为
import static Class1.*;
public class Class2 {
public static void commonStaticMethod(){}
}
令我惊讶的是,编译后没有任何错误,甚至没有警告。那么静态导入如何避免重载呢?
最佳答案
静态导入不会重载。它们只是语法糖,可以缩短其他类的静态方法的使用时间。
也就是说,当调用当前上下文中不可用的方法时,它会检查静态导入以查看是否存在匹配的静态方法。
因此 staticMethod()
将扩展为 SomeOtherClass.staticMethod()
在您的特定情况下,不存在冲突,因为您不尝试调用commonStaticMethod
。如果你这样做,编译器要么提示不明确,要么默认使用当前类中的静态方法(我不确定是哪一个——我在静态导入中不使用 * )。但这是您可以轻松亲自检查的内容。
关于java - 静态导入的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510655/