java中的::是什么意思?
forEach(System.out::println)
1 | for (String s : str){ |
上面的代码我们已经很熟悉了,可forEach(System.out::println)
是什么鬼?
其实这是lambda表达式的进一步精简,等价于forEach((x)->System.out.println(x))
lambda 表达式允许4种方式的双冒号
种类 | 使用方法 | 对应的lambda表达式 |
---|---|---|
应用特定对象的实例方法 | Object :: instanceMethod | (a,b,…)->特定对象.实例方法(a,b,…) |
引用类对象 | Class :: staticMethod | (a,b,…)->类名.类方法(a,b,…) |
引用某个类对象的实例方法 | Class :: instanceMethod | (a,b,…)->A.实例方法(a,b,…) |
引用构造器 | Class :: new | (a,b,…)->new 类名(a,b,…) |