匿名クラスと@Override
匿名クラス(anonymous class)のメソッドを作るときに@Overrideを使おうとすると、元がinterfaceだとオーバーライドできないと言われる(メソッドはそのスーパークラスのメソッドをオーバーライドしません)。なるほど…なのかな?
interface InterfaceExecutor {
public void execute();
}
abstract class AbstractExecutor {
public abstract void execute();
}
class Main {
public static void main(String[] args) {
new AbstractExecutor() {
@Override public void execute() { // OK.
System.out.println("execute 1");
}
}.execute();
new InterfaceExecutor() { // Compile error.
@Override public void execute() {
System.out.println("execute 2");
}
}.execute();
}
}追記:
satoshisさんが調べてくださいました。恐縮です。そうか、@Overrideの節を見ればよかったのか。