日期:2014-05-20  浏览次数:20581 次

java 泛型问题?
......
List   entries   =   new   ArrayList();   //1
                        .....
entries.addAll(inFeed.getEntries());   //2
                        ......

第一行定义一个List类型的entries,   第二行的inFeed.getEntries()方法返回的是一个List类型的值,编译通不过,请问如何使用泛型解决?

编译器提示:
FeedAggregator.java:     警告:[unchecked]   未经检查的转换
找到:   java.util.List
需要:   java.util.Collection <?   extends   java.util.ArrayList>
                                                                                entries.addAll(inFeed.getEntries());
                                                                                                                                                ^

------解决方案--------------------
不是这样写的啦,你那上面找了半天,不过找到了,要改成

List <SyndEntry> entries = new ArrayList <SynEntry> ();

同时,还要把 SyndFeed 类中的 getEntries() 的方法返回类型从 List 改为 List <SyndEntry> 就基本上可以了。但是这个程序里所有有 List 代码的地方都要加上泛型参数,否则还会报警告。
------解决方案--------------------
@SuppressWarnings( "unchecked ")
表示该项所涵盖的范围不需要显示所有的警告信息。
你也可以在将元素添加到List时强制类型转换或用泛型。