现在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      } }

  

  上面的所有方法执行玩的结果都是如下:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 print value : a print value : b print value : c print value : d

  在JDK8中,接口Iterable 8中默认实现了forEach方法,调用了 JDK8中增加的接口Consumer内的accept方法,执行传入的方法参数。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄