现在JDK双冒号是:
public
class
MyTest {
public
static
void
printValur(String str){
System.out.println(
"print value : "
+str);
}
public
static
void
main(String[] args) {
List<String> al = Arrays.asList(
"a"
,
"b"
,
"c"
,
"d"
);
//下面面的forEach循环和上面的循环是等价的
for
(String a: al) {
AcceptMethod.printValur(a);
}
//下面的for each循环和上面的循环是等价的
al.forEach(x->{
AcceptMethod.printValur(x);
});
al.forEach(AcceptMethod::printValur);
//下面的方法和上面等价的
Consumer<String> methodParam = AcceptMethod::printValur;
//方法参数
al.forEach(x -> methodParam.accept(x));
//方法执行accept
}
}
上面的所有方法执行玩的结果都是如下:
print value : a
print value : b
print value : c
print value : d
在JDK8中,接口Iterable 8中默认实现了forEach方法,调用了 JDK8中增加的接口Consumer内的accept方法,执行传入的方法参数。