2014-12-04 70 views
-1

继PECS原则我知道我可以宣布,我可以把类型T的值到一个列表,像这样(T这里是一个字符串):Java泛型列表作为parmeter

​​

继同样的原则,谁想要穿越包含列表T的可能做这种方式:

void myTraversingMethod(List<? extends Object> anyList) { 
    for (Object o: anyList) { 
    ... 
    } 
} 

可是我怎么传我在步骤1到步骤2的方法产生的名单?

myTraversingMethod(myList) <--- Not possible 

即使我想我似乎甚至无法正确投射参数。

泛型专家,帮我在这里:-)

+5

你有什么错误?它是一个编译错误?请把它写在问题上。 – logoff 2014-12-04 10:38:35

+0

BTW <?扩展Object>不是很丰富,因为任何东西都会扩展Object。泛型的力量开始于实际使用泛型类型时,比如'public class Foo {public T getFoo(){...}}' – geert3 2014-12-04 10:58:16

回答

2

先让明确的几件事情, 不List<? super Object) myList,你有)字符,而不是> 另一件事是列表中没有定义方法put,添加东西到列出您在使用add

整理yhose问题一切正常后,看看this example

+0

对于语法错误,我并不是真的想要示例代码是可编译只是为了从概念上说明问题。感谢这个例子,但它只解决了我一半的问题。我有这些项目,我想列入名单:类东西 {T值; T getValue(); setValue(T t){...}}然后我必须把这些对象放到一个列表中,我可以传递给另一个方法,然后遍历这些对象。 – user1283068 2014-12-09 12:41:17

+0

@ user1283068所以你有类似的东西http://ideone.com/7UIwAb对不对?你有什么问题? – user902383 2014-12-09 13:15:54

+0

感谢这个例子 - 有点不傻:-)我的确处于“超级”或“扩展”似乎不符合目的的情况,并且想要提出一个关于这个问题的问题。但我在表达这个问题时并不十分小心,因此您或其他人如何能够提供有意义的答案。谢谢你尝试.. :-) – user1283068 2014-12-11 10:51:51