Java 9 เพิ่ม static factory methods ให้ Collections: List.of(), Set.of(), Map.of(), Map.ofEntries() สร้าง immutable collections
เงื่อนไข/ข้อจำกัด
- โครงสร้าง immutable (ไม่แก้ไขได้หลังสร้าง)
- ไม่อนุญาต null elements/keys
- Serializable ถ้าทุก element serializable
- ปฏิเสธ duplicate elements/keys ตอนสร้าง
- ลำดับ iteration ของ Set ไม่ระบุ และอาจเปลี่ยน
- Value-based: factories อาจสร้าง instance ใหม่หรือ reuse อย่าใช้ identity-sensitive operations
ไวยากรณ์
List.of(elements...)
Set.of(elements...)
Map.of(k1, v1, k2, v2)
Map.ofEntries(entry1, entry2...)
ตัวอย่าง
Set countries = Set.of("India", "England", "South Africa", "Australia");
System.out.println(countries); // [South Africa, India, Australia, England]
try {
countries.add("New Zealand"); // UnsupportedOperationException
} catch (Exception e) {
System.out.println("Cannot modify immutable collection!");
}
ผลลัพธ์
[South Africa, India, Australia, England] Cannot modify immutable collection!