......
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());
                                                                        ^

解决方案 »

  1.   

    List<Entries> entries = new ArrayList<Entries>();而 getEntries() 方法返回的类型也应是 List<Entries> 的
      

  2.   

    不知道添加到 List 里面的类名,就假设是 Entries 了。
      

  3.   

    inFeed.getEntries() 这个方法的返回类型就是 List!
      

  4.   

    不懂你为什么要这样写,没必要
    直接么
    List entries = inFeed.getEntries(); 
    好了
      

  5.   

    最简单的方法,在你的方法或类之前加上 
    @SuppressWarnings(value={"unchecked"})
    就好了
      

  6.   

    import java.net.URL;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.List;
    import java.util.ArrayList;import com.sun.syndication.feed.synd.SyndFeed;
    import com.sun.syndication.feed.synd.SyndFeedImpl;
    import com.sun.syndication.io.SyndFeedOutput;
    import com.sun.syndication.io.SyndFeedInput;
    import com.sun.syndication.io.XmlReader;import java.lang.annotation.*;/**
     * It aggregates a list of RSS/Atom feeds (they can be of different types)
     * into a single feed of the specified type.
     * <p>
     * @author Alejandro Abdelnur
     *
     */
    public class FeedAggregator {    public static void main(String[] args) {
            boolean ok = false;
            if (args.length>=2) {
                try {
                    String outputType = args[0];                SyndFeed feed = new SyndFeedImpl();
                    feed.setFeedType(outputType);                feed.setTitle("Aggregated Feed");
                    feed.setDescription("Anonymous Aggregated Feed");
                    feed.setAuthor("anonymous");
                    feed.setLink("http://www.anonymous.com");                List entries = new ArrayList();
                    feed.setEntries(entries);                for (int i=1;i<args.length;i++) {
                        URL inputUrl = new URL(args[i]);                    SyndFeedInput input = new SyndFeedInput();
                        SyndFeed inFeed = input.build(new XmlReader(inputUrl));

        entries.addAll(inFeed.getEntries());
                    }                SyndFeedOutput output = new SyndFeedOutput();
                    output.output(feed,new PrintWriter(System.out));                ok = true;
                }
                catch (Exception ex) {
                    System.out.println("ERROR: "+ex.getMessage());
                }
            }        if (!ok) {
                System.out.println();
                System.out.println("FeedAggregator aggregates different feeds into a single one.");
                System.out.println("The first parameter must be the feed type for the aggregated feed.");
                System.out.println(" [valid values are: rss_0.9, rss_0.91U, rss_0.91N, rss_0.92, rss_0.93, ]");
                System.out.println(" [                  rss_0.94, rss_1.0, rss_2.0 & atom_0.3  ]");
                System.out.println("The second to last parameters are the URLs of feeds to aggregate.");
                System.out.println();
            }
        }
    }这是 java.net 中的一个例子,
    我也不知道为什么这么写?
      

  7.   

    既然采用了 JDK 1.5 的版本,那就要按 1.5 规范的要求来写,在 1.5 中所有的集合类都增加了泛型参数,当然你也可以不加,但在编译时就会出现警告,从 List 中再取回值时也要做强制类型转换,我认为是比较麻烦的。除非你添加到 List 中的数据类型是各式各样的,那就可以不用加泛型参数了,但是你的问题并不是这样的。你可以采用楼上的方法来忽略警告,或者采用我上面的那些方法来取消警告。
      

  8.   

    为什么我的jdk里没有这个例子?
      

  9.   

    不是jdk  中的例子,here:
    http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedAggregator
      

  10.   

    Software requirements: J2SE 1.4+, JDOM 1.0 and ROME 0.5.晕,这是1.4的例子阿,用tiger编译肯定会有警告的
      

  11.   

    加上@SuppressWarnings("unchecked")可以解决,
    不知道为什么,应该怎样写这个泛型?既然inFeed.getEntries()返回List, 那么这样写
    List<List> entries = new ArrayList<List>();
    entries.addAll(inFeed.getEntries());
    为什么还通不过编译?
      

  12.   

    jdk 5 引入了泛型嘛
      

  13.   

    既然inFeed.getEntries()返回List, 那么这样写
    List<List> entries = new ArrayList<List>();
    entries.addAll(inFeed.getEntries());
    为什么还通不过编译?
      

  14.   

    不是这样写的啦,你那上面找了半天,不过找到了,要改成List<SyndEntry> entries = new ArrayList<SynEntry>();同时,还要把 SyndFeed 类中的 getEntries() 的方法返回类型从 List 改为 List<SyndEntry> 就基本上可以了。但是这个程序里所有有 List 代码的地方都要加上泛型参数,否则还会报警告。
      

  15.   

    @SuppressWarnings("unchecked")
    表示该项所涵盖的范围不需要显示所有的警告信息。
    你也可以在将元素添加到List时强制类型转换或用泛型。
      

  16.   

    楼上有位兄弟说得不错,如果你往List里加入的是各式各样的类型,则没有必要用泛型了~~