У меня есть два интерфейса:
interface A {
void foo();
}
interface B {
void bar();
}
Я могу создать анонимные экземпляры классов, реализующих один из этих интерфейсов:
new A() {
void foo() {}
}
или
new B() {
void bar() {}
}
Я хочу создать анонимный класс, который реализует оба интерфейса. Что-то вроде (фиктивное):
new A implements B {
void foo() {}
void bar() {}
}
Это, очевидно, дает ошибку компиляции: "B не может быть разрешен для типа".
Обходной путь довольно прост:
class Aggregate implements A, B {
void foo() {}
void bar() {}
}
Затем я использую Aggregate
, где бы я ни использовал анонимный класс.
Мне было интересно, хотя для анонимного класса даже законно реализовать два интерфейса.