Cur*_*der 4 java collections factory literals java-9
在Java 9中,我们有方便工厂方法来创建和实例化不可变的List,Set和Map.
但是,目前还不清楚返回对象的具体类型.
例如:
List list = List.of("item1", "item2", "item3");
Run Code Online (Sandbox Code Playgroud)
在这种情况下,实际返回了哪种类型的列表?它是ArrayList或LinkedList还是其他类型的List?
API文档刚提到这一行,没有明确提到它的LinkedList:
列表中元素的顺序与提供的参数的顺序或提供的数组中的元素的顺序相同.
返回的类List.of是一个包私有静态类,因此不是公共API的一部分:
package java.util;
...
class ImmutableCollections {
...
// Java 9-10
static final class List0<E> extends AbstractImmutableList<E> {
...
}
static final class List1<E> extends AbstractImmutableList<E> {
...
}
static final class List2<E> extends AbstractImmutableList<E> {
...
}
static final class ListN<E> extends AbstractImmutableList<E> {
...
}
// Java 11+
static final class List12<E> extends AbstractImmutableList<E> {
...
}
static final class ListN<E> extends AbstractImmutableList<E> {
...
}
}
Run Code Online (Sandbox Code Playgroud)
所以这不是ArrayList(也不是LinkedList).您需要知道的唯一事情是它是不可变的并且满足List接口契约.