[英]Create a generic method Print which will accept all type of collections to It
為什么 map 的打印方法不起作用? 該方法應該接受所有 generics 並打印它們。 它適用於列表、集合、隊列,但問題出現在 map 中。
public class Question6 {
@SuppressWarnings("unchecked")
static void print(@SuppressWarnings("rawtypes") Collection c) {
System.out.println(c.getClass());
c.forEach(System.out::println);
System.out.println();
}
public static void main(String[] args) {
List<Integer> l = new ArrayList<>();
l.add(1);
l.add(2);
print(l);
List<Dummy> ld = new ArrayList<Dummy>();
ld.add(new Dummy());
print(ld);
Map<Integer,Integer> m = new LinkedHashMap<Integer, Integer>();
m.put(1,1);
print(m); // gives error?
}
}
class Dummy{
}
Map
不是Collection
。 您可以像這樣調用print
方法:
print(map.entrySet());
// or
print(map.keys());
// or
print(map.values());
或按如下方式重載它:
static void print(Collection<?> c) {
System.out.println(c.getClass());
c.forEach(System.out::println);
System.out.println();
}
static void print(Map<?, ?> map) {
System.out.println(map.getClass());
map.entrySet().forEach(System.out::println);
System.out.println();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.