zoukankan      html  css  js  c++  java
  • java8的新特性


    1.Lambda表达式:可以称为闭包,Lambda语法来代替匿名的内部类,代码不仅简洁,而且还可读,最重要的是代码量也随之减少很多。
    1.1语法:(parameters) -> expression或(parameters) ->{statements;}
    ():参数列表;
    ->: 运算符;
    即:() -> lambda主体(单一表达式或语句块)
    1.2变量作用域:只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误
    1.3 eg:
    无参数:
    //不使用Lambda表达式

    1 Runnable runnable1=new Runnable(){
    2     @Override
    3     public void run(){
    4         System.out.println("Running without Lambda");
    5     }
    6 };

    //使用Lambda表达式

    1 Runnable runnable2=()->System.out.println("Running from Lambda");

    一个参数:x -> 2 * x ;
    两个参数:(x, y) -> x – y ;

    2.方法引用:通过方法的名字来指向一个方法,可以使语言的构造更紧凑简洁,减少冗余代码。
    语法:使用一对冒号 ::。

    1 @FunctionalInterface
     2 public interface Supplier<T> {
     3     T get();
     4 }
     5  
     6 class Car {
     7     //Supplier是jdk1.8的接口,这里和lamda一起使用了
     8     public static Car create(final Supplier<Car> supplier) {
     9         return supplier.get();
    10     }
    11  
    12     public static void collide(final Car car) {
    13         System.out.println("Collided " + car.toString());
    14     }
    15  
    16     public void follow(final Car another) {
    17         System.out.println("Following the " + another.toString());
    18     }
    19  
    20     public void repair() {
    21         System.out.println("Repaired " + this.toString());
    22     }
    23 }
    • 构造器引用:它的语法是Class::new,或者更一般的Class< T >::new实例如下:

      final Car car = Car.create( Car::new )final ListCar > cars = Arrays.asList( car );
    • 静态方法引用:它的语法是Class::static_method,实例如下:

      cars.forEach( Car::collide );
    • 特定类的任意对象的方法引用:它的语法是Class::method实例如下:

      cars.forEach( Car::repair );
    • 特定对象的方法引用:它的语法是instance::method实例如下:

      final Car police = Car.create( Car::new )cars.forEach( police::follow );

    3.函数式接口:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

    函数式接口可以被隐式转换为 lambda 表达式。

  • 相关阅读:
    Recommended Books for Algo Trading in 2020
    Market Making is simpler than you think!
    Top Crypto Market Makers of 2020
    Top Crypto Market Makers, Rated and Reviewed
    爬取伯乐在线文章(五)itemloader
    爬取伯乐在线文章(四)将爬取结果保存到MySQL
    爬取伯乐在线文章(三)爬取所有页面的文章
    爬取伯乐在线文章(二)通过xpath提取源文件中需要的内容
    爬取伯乐在线文章(一)
    爬虫去重策略
  • 原文地址:https://www.cnblogs.com/talenter/p/9926086.html
Copyright © 2011-2022 走看看