java双冒号写法(Lambda的简写)
类似这种 Person::getName,双冒号写法,是Java8对Lambda表达式的简写
常见的简写场景有
以下是Java 8中方法引用的一些语法:
静态方法引用(static method)语法:classname::methodname 例如:Person::getAge
对象的实例方法引用语法:instance::methodname 例如:System.out::println
对象的超类方法引用语法: super::methodname
类构造器引用语法: classname::new 例如:ArrayList::new
数组构造器引用语法: typename[]::new 例如: String[]:new
注意:若Lamdba参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method (类::实例方法)
常见使用场景举例
String::valueOf //x -> String.valueOf(x) Object::toString //x -> x.toString() x::toString //() => x.toString() ArrayList::new //() => new ArrayList<>() Math::abs //n -> Math.abs(n) marry(this::buyHouse) //marry(() -> this.buyHouse()) int[]::new //length -> new int[length] Stream.of(1, 2, 3, 4, 5, 6).min(Integer::compareTo) //Stream.of(1, 2, 3, 4, 5, 6).min((a,b) -> a.compareTo(b)) //循环中使用 list.forEach(System.out::println); list.forEach(new Demo()::print); list.forEach(Demo::print);