避免使用基本数据类型数组转换为列表
1 | public static <T> List<T> asList(T... a) { |
asList接收的参数是一个泛型的变长参数,因为基本数据类型是无法泛型化的,也就是说8个基本类型无法作为asList的参数,要想作为泛型参数必须使用对应的包
装类型
asList产生的列表不可操作
对asList产生的列表不可操作,如add,remove等操作,否则会抛出UnsupportedOperationException
异常(表示list不支持该操作)
1 | public static <T> List<T> asList(T... a) { |
注意: 这里asList返回的ArrayList其实不是java.util.ArrayList,而是Arrays的一个内部类,该内部类提供了size、toArray、get、set、indexOf、contains 方法,而像 add、remove 等改变 list 结果的方法从 AbstractList
父类继承过来,而且AbstractList 父类的add,remove等方法会直接抛出UnsupportedOperationException异常。
1 | private static class ArrayList<E> extends AbstractList<E> |
参考文章: http://wiki.jikexueyuan.com/project/java-enhancement/java-thirtysix.html