建议66,67 注意Arrays.asList()的使用

代码

public static void main(String[] args) {
int[]data = {1,2,3,4,5};
List list = Arrays.asList(data);
System.out.println(list);
System.out.println(data.length);

}

打印出结果

[[I@4dc63996]
1

Arrays.asList()

asList方法输入的是一个泛型变长参数,基本类型不能泛型化的,但是程序没有报错,例子是把int类型的数组作为了T的类型,所以转换后再List就只有一个为int数组的元素

代码

public static void main(String[] args) {
Integer []data = {1,2,3,4,5};
List list = Arrays.asList(data);
list.add(6);

}

输出

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.jxufe.rule.Client.main(Client.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Arrays.asList()返回一个ArrayList ,但是这个ArrayList是Arrays的内部静态类,

这个内中没有实现AbstractList的add方法,在Abstract中 public void add(int index, E element) { throw new UnsupportedOperationException(); }

会抛出Exception

原文地址:https://www.cnblogs.com/alway-july/p/6654529.html