所以我有一个班级public abstract class Value<?>
然后我有2个不同的子类public class StringV extends Value<String>
和public class IntegerV extends Value<Integer>
我使用访问者浏览这些类并通过它返回Value<?>
类型的对象。
此访问者浏览对象的arraylist并返回StringV
或IntegerV
对象,我试图实现一个遍历该arraylist的方法并返回一个新对象各自的班级。这是我实施的,但显然它不起作用。
public Value<?> visitSequence(Sequence c) {
Value<?> result;
int sequence_size = c.size();
for (int i=0; i<sequence_size; i++) {
result = c.get(i).accept(this);
}
return result;
}
有没有办法通过同一个变量返回变量类型的对象?或者还有其他方法可以实现这个目标吗?
Sequence类的一部分
public class Sequence extends Expression implements Visitable {
List<Value> _values = null;
public Sequence() {
_values = new ArrayList<Value>();
}
public Value get(int ix) {
return _values.get(ix);
}
public Value<?> accept(Visitor v) {
return v.visitSequence(this);}
提前致谢!