zoukankan      html  css  js  c++  java
  • Java 8 方法引用

    Java 8 方法引用

    http://www.runoob.com/java/java8-method-references.html

    Supplier 接口

    复制代码 代码如下:
     
    Supplier(这个接口可以看成一个对象的工厂,每次调用返回一个给定类型的对象)
    实例:person.get();的方法,相当于new Person();
    Supplier<Person> person = Person::new;
    person .get();   // new Person
     
     

    方法引用通过方法的名字来指向一个方法。

    方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

    方法引用使用一对冒号(::)。

    下面,我们以定义了4个方法的Car这个类作为例子,区分Java中支持的4种不同的方法引用。

    public static class Car { public static Car create( final Supplier< Car > supplier ) { return supplier.get(); } public static void collide( final Car car ) { System.out.println( "Collided " + car.toString() ); } public void follow( final Car another ) { System.out.println( "Following the " + another.toString() ); } public void repair() { System.out.println( "Repaired " + this.toString() ); } }
    • 构造器引用:它的语法是Class::new,或者更一般的Class< T >::new实例如下:

      final Car car = Car.create( Car::new ); final List< Car > 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 );

    方法引用实例

    在 Java8Tester.java 文件输入以下代码:

    Java8Tester.java 文件

    import java.util.List; import java.util.ArrayList; public class Java8Tester { public static void main(String args[]){ List names = new ArrayList(); names.add("Google"); names.add("Runoob"); names.add("Taobao"); names.add("Baidu"); names.add("Sina"); names.forEach(System.out::println); } }

    实例中我们将 System.out::println 方法作为静态方法来引用。

    执行以上脚本,输出结果为:

    $ javac Java8Tester.java 
    $ java Java8Tester
    Google
    Runoob
    Taobao
    Baidu
    Sina
  • 相关阅读:
    Swift入门篇-Hello World
    Swift入门篇-swift简介
    Minecraft 插件 world edit 的cs 命令
    搭建本地MAVEN NEXUS 服务
    MC java 远程调试 plugin 开发
    企业内部从零开始安装docker hadoop 提纲
    javascript 命令方式 测试例子
    ca des key crt scr
    JSF 抽象和实现例子 (函数和属性)
    form 上传 html 代码
  • 原文地址:https://www.cnblogs.com/handsome1013/p/7698286.html
Copyright © 2011-2022 走看看