close
在研究為什麼 List<List<Integer>> res = new ArrayList<>();
為什麼可以這樣初始,然後研究到這個
看到有人寫了很棒的介紹
http://wucodingroad.blogspot.com/2017/04/java-covariant-contravariant.html
大致內容就是,有些type 是無法等比轉換的
Object objects = new String();
Number numbers = new Integer(0);
變成array 也可的,這種是covariant (中文叫協變)
Object[] objects2 = new String[2];
但是也有些是不行的
像是雖然 List<Integer> res = new ArratList<Integer>(); 是可以的
但是List<List<Integer>> res = new ArrayList<ArrayList<Integer>>(); 是不行的
這邊沒有covariant ,是invariant
所以要寫成List<List<Integer>> res = new ArrayList<>();
然後用像是 res.add(ArraysList<Integer>())的方式 (Java 1.7後開始)
或是就用List<List<Integer>> list = new ArrayList<List<Integer>>();
全站熱搜