java - 静态导入的工作原理

标签 java static import overloading

我正在上的两堂课是这样的。

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/

相关文章:

java - 使用 if 语句更改图像

java - 我正在制作一个刽子手项目,我想知道如何在完成所有尝试后让游戏停止?

java - 与线程通信的模式

Java静态错误

c++ - 为什么我不能在类中初始化非常量静态成员或静态数组?

c++ - 为什么你_必须_初始化 C++ 静态成员变量?

scripting - 在Scala中,是否可以编写引用另一个脚本的脚本

java - 将 JSON 导入 Eclipse 项目

javascript - 使用 webpack 远程导入 Electron 库

java - 线程.sleep(5000);和 TimerThread.sleep(5000);在java中