在 C# 和 C++ 的一些项目之后,我开始使用 Java。
我想设计这样的访问者界面:
public interface ActionVisitor<A> {
void visitAction(A action);
}
public interface MySmallActionVisitor
extends ActionVisitor<ActionA>,
ActionVisitor<ActionB>
{
}
public interface MyFullActionVisitor
extends ActionVisitor<ActionA>,
ActionVisitor<ActionB>,ActionVisitor<ActionC>,ActionVisitor<ActionD> //....
{
}
当然,由于类型擦除,这不起作用。(我想要这样的东西的原因是我将为可以访问的不同操作组提供不同的访问者界面。)
我想到的唯一解决方案是声明接口
public interface ActionAVisitor {
void visitAction(ActionA action);
}
public interface ActionBVisitor {
void visitAction(ActionB action);
}
//...
接着
public interface MySmallActionVisitor
extends ActionAVisitor, ActionBVisitor
{
}
这会起作用,但我不喜欢所有 ActionXVisitor-Interfaces 的声明,这是愚蠢的重复和大量文件......
你有什么想法可以更好地做到这一点吗?
非常感谢!