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();
        }
    }
    
  • 相关阅读:
    hihocoder-1603-提取用户名
    hihocoder-1604-股票价格II
    求最长非重复子串
    程序员面试金典--取前K小的数
    hihocoder-1574-元素魔法--数学
    Struts2工作流程
    List和Map
    线程基本知识
    AOP通过反射机制实现动态代理/IOC依赖注入
    LayUi
  • 原文地址:https://www.cnblogs.com/code-duck/p/13431137.html
Copyright © 2011-2022 走看看