gpt4 book ai didi

java - Java 8 默认接口(interface)中 `this` 的静态类型是什么?

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

我正在为一个项目实现访问者模式,并意识到我可以通过让 accept 的默认实现如下来节省一些输入。

public interface Visitable {
default public void accept(Visitor v) {
v.visit(this);
}
}

但是,如果 this 的静态类型解析为 Visitable,此实现将不起作用,那么在这种情况下 this 的静态类型是什么?

最佳答案

由于在您的上下文中,this 用作参数类型,因此调用将在编译和运行时解析为 Visitor#visit(Visitable)。因此,在这种情况下尝试创建默认方法不会有任何好处。

this 唯一可以多态使用的情况是将其用作接收者:

public interface Foo
{
public default void bar()
{
this.bar(1);
}

public void bar(int i);
}

关于java - Java 8 默认接口(interface)中 `this` 的静态类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616796/

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