Люди, кажется, немного смущены анонимными классами и локальными классами.Это локальный класс:
public void m() {
class MyClass{}
MyClass cl = new MyClass();
}
Вы можете объявить MyClass
final, но на самом деле его можно наследовать, так как в любом другом месте в Java можно объявить его окончательным дляИзбегайте этого:
public void m() {
class MyClass{}
MyClass cl = new MyClass();
class MyOtherClass extends MyClass{}
MyOtherClass cl2 = new MyOtherClass();
}
Насколько мне известно, анонимные классы не считаются окончательными.Тем не менее, синтаксически нет никакого способа унаследовать от них, поэтому для этого потребуется могущественный взлом файла класса.