В Java вложенные классы могут быть либо static
, либо нет. Если они static
, они не содержат ссылки на указатель содержащего экземпляра (они также больше не называются внутренними классами, они называются вложенными классами).
Забывая сделать вложенный класс static
, когда он не нуждается в этой ссылке, может привести к проблемам с сбором мусора или анализом утечки.
Возможно ли сделать анонимный внутренний класс static
? Или компилятор автоматически определяет это (что могло бы быть, потому что не может быть никаких подклассов)?
Например, если я делаю анонимный компаратор, мне почти никогда не нужна ссылка на внешнюю сторону:
Collections.sort(list, new Comparator<String>(){
int compare(String a, String b){
return a.toUpperCase().compareTo(b.toUpperCase());
}
}