Согласно JLS:
15.9.5 Объявления анонимного класса Объявление анонимного класса автоматически выводится компилятором из выражения создания экземпляра класса.
Анонимный классникогда не абстрагируйтесь (§8.1.1.1).Анонимный класс всегда является внутренним классом (§8.1.3);оно никогда не статично (§8.1.1, §8.5.2). Анонимный класс всегда неявно является окончательным (§8.1.1.2) .
Похоже, это было конкретное проектное решение, поэтому есть вероятность, что у него есть история.
Если я выберу такой класс:
SomeType foo = new SomeType() {
@Override
void foo() {
super.foo();
System.out.println("Hello, world!");
}
};
Почему мне не разрешается подкласс, если я так решу?
SomeType foo = new SomeType() {
@Override
void foo() {
super.foo();
System.out.println("Hello, world!");
}
} {
@Override
void foo() {
System.out.println("Hahaha, no super foo for you!");
}
};
Я не говорюЯ обязательно хочу или даже могу придумать причину, по которой я бы это сделала.Но мне любопытно, почему это так.