У меня есть два интерфейса:Реализовать два интерфейса в анонимном классе
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
, где я когда-либо использовал бы анонимный класс.
Мне было интересно, является ли законным анонимный класс для реализации двух интерфейсов.
См. [Why-an-anonymous-class-cant-implement-multiple-interfaces-direct] (http://stackoverflow.com/questions/4774168/why-an-anonymous-class-cant-implement-multiple- interface-direct) – nawfal