给出以下人为的示例:
public class Child extends Parent<Child, String> () {}
public class Parent<E extends Parent, V> {
public V value;
// maps <List of Entities> to <List of Values>
public List<V> filterValues(List<E> entities) {
List<V> values = new ArrayList();
for (E entity : entities) {
values.add(entity.value); // compiler error: add(V) cannot be
// applied to (java.lang.Object)
}
return values;
}
}
我不完全了解此错误的性质。被List<V>
解析为List<Object>
?如何解决将特定类型映射到其关联字段的问题?
如果我正确理解您要执行的操作,似乎您想声明Parent
为class Parent<E extends Parent<?,V>, V>
。
它可以编译,但是在不知道此设计目的的情况下,很难进一步评论其用途。我的“直觉”是,你得太多严重吧...一个直接的想法是为什么不参数化filterValues
与E
而不是整个类:
class Parent<V> {
public <E extends Parent<V>> List<V> filterValues(List<E> entities) {
....
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句