JAVA8双冒号

Posted 是谁扭曲了时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA8双冒号相关的知识,希望对你有一定的参考价值。

  现在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方法,执行传入的方法参数。

以上是关于JAVA8双冒号的主要内容,如果未能解决你的问题,请参考以下文章

java8 :: 用法 (JDK8 双冒号用法)

jquery 冒号转义 为啥双斜杠

Java 8中双冒号(::)中未处理的异常[重复]

java的几个奇怪语法

java的几个奇怪语法

jjava的几个奇怪语法