Arrays.asList()方法返回对象的真实类型是什么?
Arrays.asList() 返回对象的实际类型解析
Arrays.asList()方法虽然对外声明返回List<T>接口类型,但它实际返回的是java.util.Arrays类内部的私有静态嵌套类java.util.Arrays$ArrayList——注意这个类和我们日常使用的java.util.ArrayList并非同一个,只是类名相同。
你可以通过代码直接验证它的实际类型:
List<Integer> list = Arrays.asList(1, 2, 3, 4); // 打印对象的实际类名 System.out.println(list.getClass().getName()); // 输出结果:java.util.Arrays$ArrayList
这个内部实现类有个关键特性:它是基于传入的数组直接包装而成的,集合大小固定,不支持add()、remove()这类会改变集合长度的操作,调用这些方法会抛出UnsupportedOperationException。而我们平时用new ArrayList<>()创建的java.util.ArrayList是动态扩容的,支持所有List接口定义的修改操作。
内容的提问来源于stack exchange,提问作者jachai.sotaro
相关产品推荐
相关产品推荐

