双冒号实际上是返回了一个Consumer<T>类型 import java.util.function.Consumer;
实例名::方法名 其中返回的Consumer<T>代表传递的参数
package com.qbsea.knowledge.jdk8z;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
public class TwoColon {
public static void printStr(String str) {
System.out.println("this is "+str);
}
public static void main(String[] args) {
List<String> al = Arrays.asList("a","b","c","d");
//传统的打印
for (String string : al) {
printStr(string);
}
System.out.println("----");
//改进的打印
al.forEach(record -> printStr(record));
//双冒号的打印
System.out.println("--双冒号--");
al.forEach(TwoColon::printStr);
System.out.println("--双冒号1--");
Consumer<String> methodParam = TwoColon::printStr; //方法参数
al.forEach(x -> methodParam.accept(x));//方法执行accept
}
}