ใน Java คลาสที่ซ้อนกันสามารถเป็นstatic
หรือไม่ก็ได้ หากเป็นstatic
เช่นนั้นจะไม่มีการอ้างอิงถึงตัวชี้ของอินสแตนซ์ที่มีอยู่ (ยังไม่เรียกว่าคลาสภายในอีกต่อไปเรียกว่าคลาสที่ซ้อนกัน)
การลืมสร้างคลาสที่ซ้อนกันstatic
เมื่อไม่ต้องการการอ้างอิงนั้นอาจทำให้เกิดปัญหากับการรวบรวมขยะหรือการวิเคราะห์การหลบหนี
เป็นไปได้ไหมที่จะสร้างคลาสภายในที่ไม่ระบุตัวตนstatic
ด้วย หรือคอมไพเลอร์คิดออกโดยอัตโนมัติ (ซึ่งทำได้เพราะไม่มีคลาสย่อยใด ๆ )?
ตัวอย่างเช่นหากฉันทำการเปรียบเทียบแบบไม่ระบุตัวตนฉันแทบไม่ต้องการการอ้างอิงถึงภายนอกเลย:
Collections.sort(list, new Comparator<String>(){
int compare(String a, String b){
return a.toUpperCase().compareTo(b.toUpperCase());
}
}
Collections.sort(list, String.CASE_INSENSITIVE_ORDER)
งานได้ตั้งแต่ Java 2 อ่านเนื่องจากมี Collection API อยู่ ...