我爱编程

Java8.0新热性之Lambda表达式

2018-05-28  本文已影响0人  付凯强

0. 序言

1. 场景

@FunctionalInterface
public interface Runnable {
    /**
     * When an object implementing interface <code>Runnable</code> is used
     * to create a thread, starting the thread causes the object's
     * <code>run</code> method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method <code>run</code> is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}

2. 配置

要想使用Lambda表达式,需要在app/build.gradle中添加如下配置:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

3. 使用

findViewById(R.id.main_install_apk).setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
          Log.i(TAG, "Hello Lambda");
     }
});
findViewById(R.id.main_install_apk).setOnClickListener((v) -> Log.i(TAG, "Hello Lambda"));
findViewById(R.id.main_install_apk).setOnClickListener(v -> Log.i(TAG, "Hello Lambda"));

注意:当接口的待实现方法只有一个参数的时候,可以去掉参数外面的括号。

new Thread(new Runnable() {
      @Override
      public void run() {
           Log.i(TAG, "Hello Lambda");
      }
}).start();
new Thread(()->Log.i(TAG, "Hello Lambda")).start();
LambdaListener listener_max = new LambdaListener() {
            @Override
            public String doSomething(String a, int b) {
                String result = a + b;
                return result;
            }
        };
LambdaListener listener_medium = (String a, int b) -> {
            String result = a + b;
            return result;
        };
LambdaListener listener_min = (a, b) -> {
            String result = a + b;
            return result;
        };
 sayLambda((a, b) -> {
            String result = a + b;
            return result;
        });
public void sayLambda(LambdaListener lambdaListener) {
        String a = "Hello Lambda";
        int b = 1024;
        String result = lambdaListener.doSomething(a, b);
        Log.i(TAG, "result: " + result);
    }

4. 后续

如果大家喜欢这篇文章,欢迎点赞;如果想看更多前端移动端后端Java或Python方面的技术,欢迎关注!

上一篇 下一篇

猜你喜欢

热点阅读