public class Java8_Supplier {
public static void main(String[] args) {
//java7 写法
Supplier<Animal> animalSupplier = new Supplier<Animal>() {
@Override
public Animal get() {
return new Animal();
}
};
/**
* java8 lambda表达式
*
* 由源码可以看到 Supplier接口是有 @FunctionalInterface 注解的
*
* 所以可以用lambda表达式
*
*/
Supplier<Animal> animalSupplier1 = () -> new Animal();
//更简洁的书写方式
Supplier<Animal> animalSupplier2 = Animal::new;
//Supplier翻译为供应者,类似工厂,用于生产对象
Animal animal = animalSupplier2.get();
//总结
//() -> new Animal()代表的是lambda表达式
//Animal::new 代表的是lambda表达式中对象创建,也就是 new Animal()
//Animal::new这种用法是在lambada表达式的前提下,所以 Animal animal = Animal::new这种
//用法是错误的
}
}
class Animal{
}
大家有什么更好的见解,欢迎交流!