我试图在java接口中创建一个静态方法,但是当我尝试使用类对象调用它时,它导致了错误。我想如果静态方法属于类,也许我无法在接口中创建静态方法/变量。但这里说的是 Interfaces 接口可以有静态方法/变量。请澄清这一点。另外,如果接口中确实存在静态方法/变量,您如何在类中调用它。
尝试在接口中创建静态方法。
无法从我正在实现接口的类中调用它。
给出错误。
您的问题的答案在 Java 语言规范 第 8.4.8 章中。继承、覆盖和隐藏:
类 C 从其直接超类继承超类的所有具体方法 m(静态和实例),其中以下所有条件均成立:
- [...]
类 C 从其直接超类和直接超接口继承所有抽象和默认(第 9.4 节)方法 m,其中以下所有条件均成立:
- [...]
类不从其超级接口继承静态方法
最后一句话意味着要从类实现的接口调用静态方法,您必须用接口的名称来限定它:
interface MyInterface {
static void info() {
}
}
class MyClass implements MyInterface {
public static void main(String[] args) {
MyInterface.info();
}
}