Discuss / Java / 使用List的of方法来创建List,会带来一个很有意思的结果

使用List的of方法来创建List,会带来一个很有意思的结果

Topic source

张卿长

#1 Created at ... [Delete] [Delete and Lock User]
Class cls=list1.getClass();
System.out.println(cls.getName());  //输出java.util.ArrayList  即反射还是遵循Java的多态的
Class cls2=list2.getClass();
System.out.println(cls2.getName());//这里输出的是java.util.ImmutableCollections$ListN


这里就非常有意思了。第一个很好理解,反射还是遵循Java这个多态的规则,仍然是ArrayList类。

但是使用List接口提供的of()方法,根据给定元素快速创建List。 这时创建的List就仅仅是`List` 接口的实现类的实例,具体是哪个实现类取决于 Java 库的内部实现。 它可能既不是ArrayList ,也可能不是LinkedList。

并且这个方法返回的是一个不可变的List列表,那么也就是说它不允许添加、删除或者是修改元素


  • 1

Reply