java - 为什么我不能在接口(interface)中声明静态方法?

标签 java interface methods static

主题说得最多——静态方法不能在接口(interface)中声明的原因是什么?

public interface ITest {
    public static String test();
}

上面的代码给了我以下错误(至少在 Eclipse 中):“接口(interface)方法 ITest.test() 的非法修饰符;只允许公共(public)和抽象”。

最佳答案

这里有几个问题。第一个是声明静态方法而不定义它的问题。这就是区别

public interface Foo {
  public static int bar();
}

public interface Foo {
  public static int bar() {
    ...
  }
}

第一个是不可能的,原因是Espo提到:你不知道哪个实现类是正确的定义。

Java 可以允许后者;事实上,从 Java 8 开始,它确实如此!

关于java - 为什么我不能在接口(interface)中声明静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21817/

相关文章:

java - 为 ACTION_SHOW 传递两个数据模式 Intent

android - 是否可以在 AIDL 接口(interface)中使用继承?

ios - 从另一个 ViewController2.m 文件调用在 ViewController1.m 中声明的方法

java - 如何在 Java 中为 AWS Cognito 用户池中的登录用户以编程方式启用或禁用 MFA?

java - B树实现

java - 静态最终长 serialVersionUID = 1L

c# - 如何序列化接口(interface)默认属性?

c# - 为什么调用哪个接口(interface)方法很重要?

ruby - 为什么 `"在 Ruby 中不重复"* 3` the same as ` 3 * "repeat"`?

c# - 获取显示受影响的方法(名称)的代码文件版本差异