我正在研究《用Java思考》这本书。我的问题是为什么这一行没有类型转换异常:
List<Snow> snow4 = Arrays.<Snow>asList(new Light(), new Heavy());
即使 newLight()
和new Heavy()
是Powder
类型,在本书的以下代码示例中:
package com.yanbit.collection.basic;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
class Snow {
}
class Powder extends Snow {
}
class Crusty extends Snow {
}
class Stush extends Snow {
}
class Light extends Powder{}
class Heavy extends Powder {
}
public class AsListInference {
public static void main(String[] args) {
// swith list<Snow>
List<Snow> snow1 = Arrays.asList(new Powder(), new Crusty(),
new Stush());
// List<Snow> snow2 = Arrays.asList(new Light(), new Heavy());
// type list<power>
List<Snow> snow3=new ArrayList<Snow>();
Collections.addAll(snow3, new Light(), new Heavy());// implict type
List<Snow> snow4 = Arrays.<Snow> asList(new Light(), new Heavy());
}
}