簡體   English   中英

創建一個通用方法 Print,它將接受所有類型的 collections 到它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM