zoukankan      html  css  js  c++  java
  • Java8-::双冒号的使用

    Java8可以使用一对冒号:: 来实现对方法引用

    其语法有

    构造器引用:它的语法是Class::new,或者更一般的Class< T >::new

    静态方法引用:它的语法是Class::static_method

    特定对象的方法引用:它的语法是instance::method

    特定类的任意对象的方法引用:它的语法是Class::method实例如下:

    @Test
    public void test03(){
        List names = new ArrayList();
    
        names.add("Google");
        names.add("Runoob");
        names.add("Taobao");
        names.add("Baidu");
        names.add("Sina");
    
        // 使用::实现对特定类的方法
        names.forEach(System.out::println);
    }
    

    Consumer函数式接口

    可以参考:https://www.cnblogs.com/code-duck/p/13429524.html

    Consumer的基本用法:Consumer<String> consumer = (函数参数) -> {方法体}

    在下列中 consumer 是对 println()方法的应用,使用上述基本用法则是:

    Consumer<String> consumer = (String x) -> {
            synchronized (this) {
            print(x);
            newLine();
    	}
    }
    
    // 使用accept()方法接收参数
    consumer.accept(x)		// 然后执行方法体函数
    

    对forEach源码分析

    // 参考下列源码有
    // 1、action是对PrintStream.println()方法的引用
    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        
        for (T t : this) {
            // 2、接受参数 t ,调用方法println(String x)并执行
            action.accept(t);
        }
    }
    

    System类

    public final class System {
    	public final static PrintStream out = null;
    }
    

    public class PrintStream.println

    public void println(String x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }
    
  • 相关阅读:
    PHP读写XML文件的四种方法
    如何在linux系统中设置静态ip地址
    Memcached和Memcache安装(64位win7)
    Mysql存储过程和函数区别介绍
    随笔
    Vue 中使用axios传参数,后端收不到数据
    vs2019创建mvc连接mysql
    dapper多表查询
    Java并发编程:volatile关键字解析
    Mysql Innodb 间隙锁浅析
  • 原文地址:https://www.cnblogs.com/code-duck/p/13431137.html
Copyright © 2011-2022 走看看