List fixedList = Arrays.asList("abc","defg");
首先你要先了解Arrays类中的asList()方法:
public static <T> List<T> asList(T... a)返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
你的代码就是创建了一个固定长度为2的字符串列表,其实这就已经创建了对象了,因为asList()方法返回的就是一个List类型的变量,你要知道,创建对象不一定就用new cllassName(),有的类中还有专门获得对象的方法。比如说单例设计模式中,为了使之能创建一个对象,不是专门有一个返回对象的方法吗?
System.out.println(fixedList.getClass());
fixedList就是调用asList方法返回的List类型的对象,所以它调用的也是List中的方法,而不是Arrays中的方法。
我给你举个类似的例子:- class Person
- {
-
- }
- class GetPerson
- {
- public static Person getPerson()
- {
- return new Person();
- }
- }
- public class Demo
- {
- public static void main(String args[])
- {
- Person p = GetPerson.getPerson();
- System.out.println(p.getClass());
- }
- }
复制代码 这里,Person就相当于List,p就相当于fixedList,GetPerson就相当于Arrays,getPerson()方法就相当于asList()方法,因为getPerson()方法是静态的,所以直接可以用类名调用
希望这个例子能帮助你理解。 |