lamda函数式编程

lamda表达式

接受范围:

  • 预定义使用了 @Functional 注释的函数式接口,自带一个抽象函数的方法,或者SAM(Single Abstract Method 单个抽象方法)类型
  • 如果一个方法接受声明于 java.util.function 包内的接口,例如 Predicate、Function、Consumer 或 Supplier,那么可以向其传lambda表达式。

常用写法

匿名类简写

new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();
// 用法
(params) -> expression
(params) -> statement
(params) -> { statements }

forEach

// forEach
List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");
features.forEach(n -> System.out.println(n));
 
// 使用Java 8的方法引用更方便,方法引用由::双冒号操作符标示,
features.forEach(System.out::println);

方法引用

构造方法引用  =》 
// Supplier<Student> s = () -> new Student();
Supplier<Student> s = Student::new;

实例方法的引用 =》 对象::实例方法
// set.forEach(t -> System.out.println(t));
set.forEach(System.out::println);

静态方法 =》 类名::静态方法 
// Stream<Double> stream = Stream.generate(() -> Math.random());
Stream<Double> stream = Stream.generate(Math::random);

类名::实例方法
上一篇:Mac OSX上的Pythonpath


下一篇:Python: PYTHONHOME和PYTHONPATH的区别