laz*_*ing 4 java closures callback java-8
在java 8中实现回调机制的最佳和最简单的方法是什么?是否可以用lambda经验轻松取代内部的等级变化?喜欢替换
doSomethingAndRunThisCode(new Call() {
@Override
public void callback() {
System.out.println("here I am called back");
}
});
Run Code Online (Sandbox Code Playgroud)
同
doSomethingAndRunThisCode(() -> {
System.out.println("here I am called back");
});
Run Code Online (Sandbox Code Playgroud)
但我认为这不是全部.因为eclipse的代码complition,pre pre 8方式更容易.Eclipse在Java 8的实现方式上没有做任何事情(还).
是的,您可以替换内部类定义.只要您调用的方法所期望的接口具有1个未实现的方法,您就可以使用lambda语法.
所以你上面所做的是正确的.此外,正如有人指出的那样,有函数引用语法,但您传递的函数引用必须具有可对您的接口强制执行的签名.例如,使用Consumer接口:
public interface Consumer<T> {
void accept(T t);
}
public class MyClass {
void doSomething(Consumer<String> consumer) { }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以将任何函数引用传递给具有void返回的"doSomething"方法,并接受单个参数作为字符串.
即.myClassInstance.doSomething(的System.out ::的println);
我不确定eclipse,因为我没有使用最新版本,但我知道Intellij 13支持lambda语法.即使您没有使用java8,它也会将您的代码折叠成该语法以使其更易于阅读(不用担心,它不会以这种方式保存它,它只是一个展示的东西,如果需要你可以展开).
| 归档时间: |
|
| 查看次数: |
9233 次 |
| 最近记录: |