gpt4 book ai didi

java - 非法静态接口(interface)方法调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:07 24 4
gpt4 key购买 nike

Java-8 允许在接口(interface)内部定义静态方法,但是 restricts它仅通过接口(interface)名称调用:

9.4: An interface can declare static methods, which are invoked without reference to a particular object.

例如:

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 中,此类禁令都有解释。在这种情况下,我没有找到任何详细信息。所以我正在寻找这个规则的全面或权威的解释:为什么禁止通过特定对象引用调用静态方法?它破坏了什么?

最佳答案

一个相当强烈的共识是,所讨论的语法也不应该被允许用于类的静态方法,但是当意识到这一点时,改变已经太迟了。对于最近添加的接口(interface)方法来说还不算太晚。

此外,允许这种语法会引入菱形问题的可能性,因为类可以实现定义冲突方法的接口(interface)。

关于java - 非法静态接口(interface)方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com