Java中lambda表达式的简单使用

文章目录

  • 1、不带参数无返回值的
  • 2、带一个参数无返回值的
  • 3、带2个以上参数无返回值的
  • 4、有返回值的
  • 5、错误解析

1、不带参数无返回值的

使用lambda表达式之前

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                text.setText(text.getText().toString());
            }
        });

使用lambda表达式之后

 		 runOnUiThread(() ->
                text.setText(text.getText().toString())
        );
        

2、带一个参数无返回值的

使用lambda表达式之前

 start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                connect();
            }
        });

使用lambda表达式之后

start.setOnClickListener( v ->
                connect()
        );

3、带2个以上参数无返回值的

使用lambda表达式之前

Utils.send(userId,time,new BaRpc.onReceiveDataListener()
                {
                    @Override
                    public void onMessage(int type, final byte[] content)
                    {
                    doSomething();
                    }
               });

使用lambda表达式之后

Utils.send(userId,time,(type,content) -> 
 doSomething();
);

4、有返回值的

使用lambda表达式之前

Arrays.sort(numbers, new Comparator() {
    @Override
    public int compare(Integer first, Integer second) {
        return first.compareTo(second);
    }
});

使用lambda表达式之后

Arrays.sort(numbers, (first, second) -> first.compareTo(second));

返回值的其他理解

->

这个符号后面跟的有可能是表达式,有可能是一个语句等等,参考java中的lambda没有return却能返回值是什么原理啊?
如果是一个表达式,形如ab,这就是有返回值的
如果是一个语句,形如c=a
b,这就是无返回值的
如果是一个方法,形如doSth(),那就看这个方法是否有返回值
如果是一个大括号,里面就可以显式的调用return,形如{return a*b},那就是有返回值的

5、错误解析

lambda expressions are not supported at language level 7
项目添加jdk8支持
Java中lambda表达式的简单使用_第1张图片

你可能感兴趣的:(Android,Java,Java)