OLE*_*SHA 4 java syntax lambda
考虑功能接口A和B extends A.是否可以创建一个实例,不仅需要实现A,还需要B在只A需要时使用lambda表达式?
例:
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"
Run Code Online (Sandbox Code Playgroud)
我怎么打电话bar(A)打印true?
我会发现这在事件侦听器中很有用,其中子接口可以指定有关侦听器的其他数据,例如,如果Listener还实现ConcurrentListener,则同时调用它.
只需进行强制转换即可告诉编译器您想要的类型:
A a = (B)() -> someAction();
System.out.println(a instanceof B); // true
Run Code Online (Sandbox Code Playgroud)
我会发现这在事件监听器中很有用,其中子接口可以指定有关监听器的其他数据,例如,如果监听器也实现了ConcurrentListener,则会同时调用它.
这听起来像糟糕的设计(虽然我无法解释为什么......).也许你可以isConcurrent在接口中有一个实现者需要实现的方法?
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |