Lambda表达式语法

基础语法:‘->’Lambda操作符
* 左侧:Lambda表达式的参数列表 对应接口中方法中的参数列表中的参数(比如nice1中MyPredict这个接口中的方法)
* 右侧:Lambda表达式中所需要执行的功能。 对应接口中方法的实现(比如nice1中MyPredict这个接口中的方法)
*
* 语法格式1:无参数,无返回值 ()->System.out.println("aaa")
* 语法格式2:有一个参数,无返回值
* 语法格式3:只有一个参数小括号可以不写,无返回值
* 语法格式4:两个以上参数,并且Lambda体中多条语句--->test3
* 语法格式5:若Lambda中只有一个语句,return和大括号都可以不写,参数列表中的参数类型可以不写,JVM编译器可以通过上下文推断出类型

package airycode_java8.nice2;

import org.junit.Test;

import java.util.Comparator;
import java.util.function.Consumer;

/**
 * 基础语法:‘->’Lambda操作符
 * 左侧:Lambda表达式的参数列表    对应接口中方法中的参数列表中的参数(比如nice1中MyPredict这个接口中的方法)
 * 右侧:Lambda表达式中所需要执行的功能。  对应接口中方法的实现(比如nice1中MyPredict这个接口中的方法)
 *
 * 语法格式1:无参数,无返回值    ()->System.out.println("aaa")
 * 语法格式2:有一个参数,无返回值
 * 语法格式3:只有一个参数小括号可以不写,无返回值
 * 语法格式4:两个以上参数,并且Lambda体中多条语句--->test3
 * 语法格式5:若Lambda中只有一个语句,return和大括号都可以不写,参数列表中的参数类型可以不写,JVM编译器可以通过上下文推断出类型
 *
 *
 *
 *
 *
 *
 *
 */
public class TestLambda2 {

   @Test
   public void test1(){
       int num = 0;//jdk1.7之前,必须是final
       Runnable r = new Runnable() {
           @Override
           public void run() {
               System.out.println("Hello World"+num);
           }
       };

       r.run();
       System.out.println("---------------");
       Runnable r1 = ()-> System.out.println("Hello Lambda");
       r1.run();
   }

   @Test
   public void test2(){
       Consumer<String> con = (x)-> System.out.println(x);
       con.accept("airycode");
   }

   @Test
   public void test3(){

//       Comparator<Integer> com = (x,y)->{
//           System.out.println("函数式接口");
//           return Integer.compare(x,y);
//       };

       Comparator<Integer> com = (x,y)-> Integer.compare(x,y);

       Comparator<Integer> com2 = (Integer x,Integer y)-> Integer.compare(x,y);

   }

   @Test
   public void test5(){
       //必须这样的写法,不能拆开
       String[] strs = {"aaa","bbb"};

   }

   @Test
   public void test6(){
       Integer operation = operation(100, (x) -> x * x);
       System.out.println(operation);
       System.out.println("----------------");
       Integer operation2 = operation(200, (x) -> x +200);
       System.out.println(operation2);
   }

   public Integer operation(Integer num,MyFun myFun){
       return myFun.getValue(num);
   }



}


package airycode_java8.nice2;

/**
 * Created by admin on 2019/1/2.
 */
@FunctionalInterface
public interface MyFun<T> {

    public Integer getValue(Integer num);
}

  

posted on 2019-01-07 09:59  airycode  阅读(624)  评论(0编辑  收藏  举报

导航