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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 angledark0123 的頭像
    angledark0123

    CONY的世界

    angledark0123 發表在 痞客邦 留言(0) 人氣()