【发布时间】:2010-09-16 11:59:48
【问题描述】:
我想要做的是将泛型对象(ItemDelegate)内部的泛型方法(过滤器)发送到另一个泛型方法(getItem)。问题是第二种方法(getItem)无法推断出正确的类型。
// Generic object
public class ItemDelegate<T> {
public <T> T filter() {
return null;
}
}
// Generic method (receiver):
public static <T> T getItem(ItemDelegate<T> delegate) {
T item = delegate.filter();
//... do something
return item;
}
// Usage in code:
getItem(new ItemDelegate<String>() {
public String filter() {
return "Hi!";
}
}
此代码在 getItem 中生成编译错误:
T的类型参数无法确定;上界为 T,java.lang.Object 的类型变量 T 不存在唯一的最大实例
这甚至可以在 java 中完成还是有更好的方法。
谢谢。
【问题讨论】:
-
是filter()还是filter(ResultSet x)?
-
已编辑 - 应该是 filter()