......
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 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 entries = inFeed.getEntries();
好了
@SuppressWarnings(value={"unchecked"})
就好了
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 中的一个例子,
我也不知道为什么这么写?
http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedAggregator
不知道为什么,应该怎样写这个泛型?既然inFeed.getEntries()返回List, 那么这样写
List<List> entries = new ArrayList<List>();
entries.addAll(inFeed.getEntries());
为什么还通不过编译?
List<List> entries = new ArrayList<List>();
entries.addAll(inFeed.getEntries());
为什么还通不过编译?
表示该项所涵盖的范围不需要显示所有的警告信息。
你也可以在将元素添加到List时强制类型转换或用泛型。