我也不说源码什么的。因为网上太多了。但是没这么让别人通俗易懂。在这里我就通过举例让你知道:: 是干嘛的。
定义一个数组集合 ,先用拉姆达表达式 在forEach中进行遍历。
关于拉姆达表达式,很简单理解 (参数) -> {要实现的方法内容 }
public static void main(String[] args) {
List<String> Lists = Arrays.asList("AAAAA", "BBBBBB", "CCCCCC");
Lists.forEach(
(x)->{
System.out.println(x);
}
);
}
输入结果
AAAAA
BBBBBB
CCCCCC
我们把forEach理解成 for遍历 ,也就是下面这个代码。输出结果和上面一样。其实他们就是差不多的东西
for (String list:Lists) {
System.out.println(list);
}
这个时候,你把forEach里面的内容换成
System.out::println 你会发现,输入的结果也是一样。
public static void main(String[] args) {
List<String> Lists = Arrays.asList("AAAAA", "BBBBBB", "CCCCCC");
Lists.forEach(System.out::println);
}
其实 :: 并不仅仅用于 System.out::println,我们可以任意地方用。比如如下代码。
Lists.forEach(new util()::HH); Lists.forEach(new util()::GG); 他们的输出结果都是一样。
import java.util.Arrays;
import java.util.List;
public class test3 {
public static void main(String[] args) {
List<String> Lists = Arrays.asList("AAAAA", "BBBBBB", "CCCCCC");
Lists.forEach(new util()::HH);
Lists.forEach(new util()::GG);
}
}
class util{
public void HH(String x){
System.out.println(x);
}
public void GG(String y){
System.out.println(y);
}
}
是不是有点头绪了。 现在,你在看看下面三张图,你肯定就恍然大悟了。