В 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…