W Javie zagnieżdżone klasy mogą być albo static
nie. Jeśli tak static
, nie zawierają odniesienia do wskaźnika instancji zawierającej (nie są już nazywane klasami wewnętrznymi, nazywane są klasami zagnieżdżonymi).
Zapomnienie o utworzeniu klasy zagnieżdżonej, static
gdy nie jest ona potrzebna, może prowadzić do problemów z usuwaniem elementów bezużytecznych lub analizą ucieczki.
Czy można również stworzyć anonimową klasę wewnętrzną static
? A może kompilator wykrywa to automatycznie (co może, ponieważ nie może być żadnych podklas)?
Na przykład, jeśli tworzę anonimowy komparator, prawie nigdy nie potrzebuję odniesienia do zewnątrz:
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)
działa od Java 2, przeczytaj, ponieważ istnieje API Collection…