- Arrays.asList()
Arrays.asList底层表示的是数组,因此不能调整尺寸。如果你试图用add()和 delete()方法在这种列表中添加或删除元素,就有可能会引发去改变数组尺寸的尝试,因此你将会在运行时获得"Unsupported Operation"错误。
Arrays.asList方法的限制是它对所产生的List的类型做出了最理想的假设,而并没有注意你对它会赋予什么样的类型。
有时候会引发问题。
- 显示类型参数说明
//: holding/AsListInference.java // Arrays.asList() makes its best guess about type. import java.util.*; class Snow {} class Powder extends Snow {} class Light extends Powder {} class Heavy extends Powder {} class Crusty extends Snow {} class Slush extends Snow {} public class AsListInference { public static void main(String[] args) { List<Snow> snow1 = Arrays.asList( new Crusty(), new Slush(), new Powder()); // Won't compile: // List<Snow> snow2 = Arrays.asList( // new Light(), new Heavy()); // Compiler says: // found : java.util.List<Powder> // required: java.util.List<Snow> // Collections.addAll() doesn't get confused: List<Snow> snow3 = new ArrayList<Snow>(); Collections.addAll(snow3, new Light(), new Heavy()); // Give a hint using an // explicit type argument specification: List<Snow> snow4 = Arrays.<Snow>asList( new Light(), new Heavy()); } } ///:~