我在 ideone.com 中看到了以下代码:
import java.util.*;
class Test{
interface Visitor{
public <T> void visit(T Value);
}
class MyVisitor<T> implements Visitor{
List<T> list = new ArrayList<T>();
public <T> void visit(T value){
list.add(value);
}
}
}
编译此代码将产生以下+错误:
Main.java:12:错误:找不到合适的方法添加(T#1) list.add(值); ^ 方法 List.add(int,T#2) 不适用 (实际参数列表和形式参数列表的长度不同) 方法 List.add(T#2) 不适用 (实际参数 T#1 不能通过方法调用转换转换为 T#2)其中 T#1,T#2 是类型变量: T#1 扩展了在方法访问中声明的对象(T#1) T#2 扩展类 Test.MyVisitor 1 中声明的对象 1 错误
问题是visit 中的类型 T不被认为与list 中的 T相同。我该如何解决这个编译问题?