2
我目前有三类,并试图实现通用Visitor模式以便让你可以到我们的所有项目中共享库:通配符捕获在Java中,无法调用的方法
public interface Visitable<ReturnType> {
public ReturnType accept(Visitor<?, ?> v);
}
public interface Visitor<SomeVisitable extends Visitable<?>, ReturnType> {
public ReturnType visit(SomeVisitable v);
}
public class BaseObject implements Visitable<Void>{
public Void accept(Visitor<?, ?> v) {
v.visit(this); //1
// The method visit(capture#1-of ?) in the type
// Visitor<capture#1-of ?,capture#2-of ?> is not
// applicable for the arguments (BaseObject)
}
}
为什么我得到的编译时间错误//1
?老实说,我真的不知道我应该重新编写代码来编译它。
这没有多大意义。为了有用,Visitor接口应该为每个BaseObject子类使用一个visit()方法。所以它不应该是通用的。 –
你试过吗?扩展BaseObject'? –
@JBNizet你的意思是访问者的实现不应该是通用的,是吧?如果是这样,让我不同意你的看法,因为如果我们把所有这些员工放在一个库中,我们会编写更具可读性和简单的代码,并避免创建这些样板类。这不好吗? – user3663882