Java'da, Collections.emptyList () ve Collections.EMPTY_LIST var . Her ikisi de aynı özelliğe sahiptir:
Boş listeyi döndürür (değişmez). Bu liste seri hale getirilebilir.
Öyleyse birini veya diğerini kullanmak arasındaki tam fark nedir?
Java'da, Collections.emptyList () ve Collections.EMPTY_LIST var . Her ikisi de aynı özelliğe sahiptir:
Boş listeyi döndürür (değişmez). Bu liste seri hale getirilebilir.
Öyleyse birini veya diğerini kullanmak arasındaki tam fark nedir?
Yanıtlar:
Collections.EMPTY_LIST eski tarzı döndürür ListCollections.emptyList() tür çıkarımını kullanır ve bu nedenle
List<T>Collections.emptyList () Java 1.5'te eklenmiştir ve muhtemelen her zaman tercih edilir . Bu şekilde, kodunuzun içinde gereksiz yere dolaşmanıza gerek kalmaz.
Collections.emptyList()doğası gereği oyuncu kadrosu sizin için yapar .
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Kaynağa gelelim:
public static final List EMPTY_LIST = new EmptyList<>();
ve
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Kesinlikle eşit nesnelerdir.
public static final List EMPTY_LIST = new EmptyList<>();
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Tek emptyList()seçenek List<T>, jenerik döndürmesidir , böylece bu listeyi herhangi bir uyarı olmadan genel koleksiyona atayabilirsiniz.
Diğer bir deyişle, EMPTY_LIST tür güvenli değildir:
List list = Collections.EMPTY_LIST;
Set set = Collections.EMPTY_SET;
Map map = Collections.EMPTY_MAP;
İle karşılaştırıldığında:
List<String> s = Collections.emptyList();
Set<Long> l = Collections.emptySet();
Map<Date, String> d = Collections.emptyMap();