Di Java, kelas bertingkat bisa berupa salah satu static
atau tidak. Jika ya static
, mereka tidak berisi referensi ke pointer dari instance yang memuatnya (mereka juga tidak lagi disebut kelas dalam, mereka disebut kelas bersarang).
Lupa membuat kelas bersarang static
jika tidak membutuhkan referensi tersebut dapat menyebabkan masalah pada pengumpulan sampah atau escape analysis.
Apakah mungkin untuk membuat kelas dalam anonim static
juga? Atau apakah kompilator mengetahui hal ini secara otomatis (yang bisa, karena tidak dapat ada subkelas)?
Misalnya, jika saya membuat pembanding anonim, saya hampir tidak pernah membutuhkan referensi ke luar:
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)
berfungsi sejak Java 2, baca, karena API Koleksi ada…