我正在实现一个项目的访问者模式,并意识到我可以通过接受的默认实现来保存一些输入.
public interface Visitable {
default public void accept(Visitor v) {
v.visit(this);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果静态类型this解析为Visitable,则此实现将不起作用,因此this在这种情况下静态类型是什么?
因为在您的上下文中,this它被用作参数类型,所以调用将Visitor#visit(Visitable)在编译和运行时解析.因此,在此方案中尝试创建默认方法没有任何好处.
this使用它作为接收器时,唯一可以多态使用的时间:
public interface Foo
{
public default void bar()
{
this.bar(1);
}
public void bar(int i);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |