zoukankan      html  css  js  c++  java
  • java_Lambda表达式

    /*
    Lambda表达式的出现的原因
    一个接口内部只有一个方法时,有以下几种方式调用该接口
    1.需要先创建该接口的实现类,如下面的(2)
    2.创建一个静态内部类,如下面的(3)
    3.创建一个局部内部类,如下面的(4)
    4.创建一个匿名内部类,如下面的(5)
    5.Lambda表达式,如下面的(6)

    有以上几种情况的代码量可以看出,Lambda表达式的优点,
    1.简化了代码,使代码更整洁清晰
    2.简化了内部类的使用
    3.除去多余的代码块,只保留核心的代码块
    */
     1 package com.landa.test;
     2 
     3 public class Lambda1 {
     4     public static void main(String[] args) {
     5         Inter inter = new InterImpl();
     6         inter.test();
     7 
     8         inter = new InterImpl2();
     9         inter.test();
    10 
    11         // 4.局部内部类
    12         class InterImpl3 implements Inter{
    13             @Override
    14             public void test() {
    15                 System.out.println("Inter接口_局部内部类");
    16             }
    17         }
    18         inter = new InterImpl3();
    19         inter.test();
    20 
    21         // 5.匿名内部类
    22         inter = new Inter(){
    23             @Override
    24             public void test() {
    25                 System.out.println("Inter接口_匿名内部类");
    26             }
    27         };
    28         inter.test();
    29 
    30         // 6.Lambda表达式
    31         inter = () -> System.out.println("Inter接口_Lambda表达式");
    32         inter.test();
    33     }
    34 
    35     // 3.创建静态内部类
    36     static class InterImpl2 implements Inter{
    37         @Override
    38         public void test() {
    39             System.out.println("Inter接口_静态内部类");
    40         }
    41     }
    42 }
    43 
    44 // 1.定义一个接口
    45 interface Inter {
    46     // 定义一个方法
    47     void test();
    48 }
    49 // 2.定义接口的实现类
    50 class InterImpl implements Inter{
    51 
    52     @Override
    53     public void test() {
    54         System.out.println("Inter接口的实现类");
    55     }
    56 }
    /*
    Lambda表达式只有一行代码的情况才能去除花括号,如果有多行则需要使用代码块包裹
    多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
    */
     1 package com.landa.test;
     2 
     3 public class Lambda2 {
     4     public static void main(String[] args) {
     5         // 1.Lambda表达式
     6         Love love = (int a) ->{
     7             System.out.println("I Love You,"+a);
     8         };
     9         love.love(520);
    10 
    11         // 简化Lambda表达式的几种方式
    12         // 简化1:简化参数类型
    13         love = (a) ->{
    14             System.out.println("I Love You,"+a);
    15         };
    16         love.love(521);
    17 
    18         // 简化2:去除括号
    19         love = a ->{
    20             System.out.println("I Love You,"+a);
    21         };
    22         love.love(1314);
    23 
    24         // 简化3:去除花括号,这种只适合有一行代码的场合
    25         love = a -> System.out.println("I Love You,"+a);
    26         love.love(1111);
    27 
    28     }
    29 }
    30 
    31 interface Love{
    32     void love(int a);
    33 }



  • 相关阅读:
    阻塞队列(BlockingQueue)
    CountDownLatch/CyclicBarrier/Semaphore
    Guava Cache详解
    Java中的常见锁(公平和非公平锁、可重入锁和不可重入锁、自旋锁、独占锁和共享锁)
    CopyOnWriteArrayList详解
    集合类线程安全问题
    原子类的 ABA 问题
    原子类CAS的底层实现
    volatile关键字
    Java 内存模型(Java Memory Model,JMM)
  • 原文地址:https://www.cnblogs.com/1123-wyl/p/15082701.html
Copyright © 2011-2022 走看看