一尘不染

为什么我不能在接口中声明静态方法?

java

该主题充分说明了这一点-为什么不能在接口中声明静态方法的原因是什么?

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

上面的代码给了我以下错误(至少在Eclipse中):“接口方法ITest.test()的非法修饰符;仅允许public&abstract”。


阅读 305

收藏
2020-03-23

共1个答案

一尘不染

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

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

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

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

Java 可以允许后者。实际上,从Java 8开始,它确实做到了!

2020-03-23