美文网首页
java: 静态接口方法调用非法

java: 静态接口方法调用非法

作者: 帕博雷克斯丢丢 | 来源:发表于2021-09-04 02:09 被阅读0次

Question:

Java-8允许在接口内部定义静态方法,但仅通过接口名称限制其调用:

9.4:接口可以声明静态方法,这些方法在不引用特定对象的情况下被调用。

例如:
interface X {
    static void y() {
    }
}

...

X x = new X() {};
x.y();

导致错误:
error: illegal static interface method call
        x.y();
            ^
  the receiver expression should be replaced with the type qualifier 'X'
在JLS中,这种禁令经常有一种解释。在这种情况下,我没有发现任何详细信息。因此,我正在寻找对此规则的全面或权威的解释:为什么禁止通过特定的对象引用调用静态方法?它有什么坏处?

Answer:

相当强烈的共识是,有关类的静态方法也不应该使用所讨论的语法,但是到意识到这一点时,更改为时已晚。最近添加的接口方法还为时不晚。
另外,允许该语法将引入菱形问题的可能性,因为一个类可以实现定义碰撞方法的接口。

Notice:

接口中的静态方法永远不会被继承。

相关文章

网友评论

      本文标题:java: 静态接口方法调用非法

      本文链接:https://www.haomeiwen.com/subject/jwndwltx.html