В 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 ... - person Holger   schedule 16.01.2017