ใน Java เรามีCollections.emptyList ()และCollections.EMPTY_LIST ทั้งสองมีคุณสมบัติเหมือนกัน:
ส่งคืนรายการว่าง (ไม่เปลี่ยนรูป) รายการนี้สามารถต่ออนุกรมได้
แล้วความแตกต่างที่แน่นอนระหว่างการใช้อันอื่นคืออะไร
ใน Java เรามีCollections.emptyList ()และCollections.EMPTY_LIST ทั้งสองมีคุณสมบัติเหมือนกัน:
ส่งคืนรายการว่าง (ไม่เปลี่ยนรูป) รายการนี้สามารถต่ออนุกรมได้
แล้วความแตกต่างที่แน่นอนระหว่างการใช้อันอื่นคืออะไร
คำตอบ:
Collections.EMPTY_LIST
ส่งคืนรูปแบบเก่า List
Collections.emptyList()
ใช้การอนุมานประเภทจึงส่งกลับ
List<T>
Collections.emptyList () ถูกเพิ่มเข้ามาในเกาะชวา 1.5 และมันอาจจะเป็นเสมอดีกว่า ด้วยวิธีนี้คุณไม่จำเป็นต้องร่ายภายในโค้ดของคุณโดยไม่จำเป็น
Collections.emptyList()
ภายในไม่หล่อสำหรับคุณ
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
ไปที่แหล่งที่มา:
public static final List EMPTY_LIST = new EmptyList<>();
และ
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
พวกมันเป็นวัตถุที่เท่าเทียมกันอย่างแน่นอน
public static final List EMPTY_LIST = new EmptyList<>();
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
สิ่งเดียวคือemptyList()
ส่งคืนค่าทั่วไปList<T>
ดังนั้นคุณสามารถกำหนดรายการนี้ให้กับคอลเล็กชันทั่วไปโดยไม่มีคำเตือนใด ๆ
กล่าวอีกนัยหนึ่ง EMPTY_LIST ไม่ใช่ประเภทที่ปลอดภัย:
List list = Collections.EMPTY_LIST;
Set set = Collections.EMPTY_SET;
Map map = Collections.EMPTY_MAP;
เมื่อเทียบกับ:
List<String> s = Collections.emptyList();
Set<Long> l = Collections.emptySet();
Map<Date, String> d = Collections.emptyMap();