关于Arrays.asList(T... a)方法的使用注意事项

来源:互联网 发布:淘宝码数图表制作 编辑:程序博客网 时间:2024/05/16 08:02
import java.util.Arrays;import java.util.List;public class ArraysDemo {public static void main(String[] args) {//Arrays.asList(T... a)int[] data = {1, 2, 3};List list = Arrays.asList(data);System.out.println("list size = " + list.size());//1/** * 上一行代码会输出:list size = 1,而不是3。原因是在Arrays.asList(T... a) * 其接收的参数类型是泛型可变参数的。而基本数据类型是不能作为泛型的参数的。 * 按道理应该使用包装类型,但这里没有报错?? * 因为数组是可以泛型化的,所以转换后在List中就有一个类型为int的数组。 *  * 总结:该方法对于基本数据类型的数组支持的不够好,当数组是基本数据类型时不建议使用。 */System.out.println(list.get(0).getClass());System.out.println("-----------------------------");Integer[] values = {1, 2, 3, 4};List<Integer> listVal = Arrays.asList(values);System.out.println("listVal size = " + listVal.size());listVal.set(0, 8);//更新操作for(Integer in : listVal){System.out.print(in + " ");}listVal.add(5);// java.lang.UnsupportedOperationException/** * 执行add()方法会发生异常,查看源码可以知道这里的ArrayList并不是java.util.ArrayList了, * 而是Arrays中的私有静态内部类,并没有提供add方法。 * 所以除非确信array.aslist后长度不会增加,否则谨慎使用。 */}}

API中对asList(T... a)方法的说明



Arrays类中部分源码截图


类之间继承关系图



0 0
原创粉丝点击