Рассмотрим функциональные интерфейсы A
и B extends A
.Можно ли создать экземпляр, реализующий не только A
, но и B
с лямбда-выражением, когда требуется только A
?
Пример:
interface A {
void foo();
}
interface B extends A {}
void bar(A arg) {
System.out.println(arg instanceof B);
}
/* somewhere in a block */
bar( () -> {} ); // Prints "false"
Как я могвызовите bar(A)
, чтобы он печатал true
?
Я бы нашел это полезным для прослушивателей событий, где подынтерфейсы могут указывать дополнительные данные о слушателе, например, если Listener
также реализует ConcurrentListener
, этовызывается одновременно.