lambada详解-01

1、lambada表达式用在函数式接口的地方:用在有且仅有一个方法的地方。

   1、表达式案例

​ ()->{}

​ ()->{System.out.println(1);}

​ ()->System.out.println(1)

​ ()->{return 100;}

​ ()->100

​ ()->null

​ (int x)->{return x+1;}

​ (int x)->x+1

​ (x)->x+1

​ x->x+1

2、实例:常用的线程写法  注意:如果只有一行代码可以省略大括号 在小括号中可以传入参 类型可以省略。在自定义只有一个接口的方法是可以加入注解:functionInterface 函数时接口的注解。

  Callable<String> v = new Callable() {
            @Override
            public String call() throws Exception {
                return null;
            }
        };

        Callable<String> v2 =()->{
            return  "wanghuaming";
        };
        System.out.println(v2.call());
    }
public static void main(String[] args) throws Exception {
Callable<String> c3 = ()-> "3333333333";
System.out.println(c3.call());
}
 
  Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("33333333333");
            }
        };
        r1.run();

        Runnable r2 = () -> {
            System.out.println("2222222222");
        };
        r2.run();

        Runnable r3 =()-> System.out.println("44444444444444444");
        r3.run();

    我们在源码上可以清晰的看到此处的注解为:

 

     函数式接口的举例:我们可以看到 如果有返回值写retrun关键字的话,必须需要加大括号。参数可以传类型也可以不传类型。

 

 3、同时在jdk中有提供了几个函数时的接口:

  Supplier 此接口提供了输出参数的类型。

  Functiion 此接口提供了输入和输出参数的类型。

  Consumer 此接口定义了输入的输入的参数类型。

 

 

  源码如下:

@FunctionalInterface
public interface Function<T, R> {

    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
    R apply(T t);}

@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

  使用细节通过截图明确:

  

 

 

 4、lambda细节处理问题:

    runnable接口的run方法式没有返回值的,但是可以接口有返回值和无返回值的方法,可以理解为没有对返回接口处理。但第三个方法和第四个为啥报错呢?因为没有DA括号  就说明神省略了return的关键字。所以会报错。

 

    此处我们可以看到get方法是由返回值的。且返回int类型。如果没有返回值就会报错。  因为只有一行代码可以省略大括号。

 

 

5、Lambada方法的引用。

 

 

  静态方法的引用。

     

 

   实例方法的引用:

 

   对象方法的引用:

    

 

   

 

  构造方法的引用。

  

 

 

 

posted @ 2022-03-22 10:03  Jerry&Ming  阅读(187)  评论(0)    收藏  举报