java 基本语法(十七)Lambda (四)构造器引用与数组引用
2024-08-30 02:01:58
1.构造器引用格式:
类名::new
2.构造器引用使用要求:
和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致。抽象方法的返回值类型即为构造器所属的类的类型
3.构造器引用举例:
//Supplier中的T get()
//Employee的空参构造器:Employee()
@Test
public void test1(){ Supplier<Employee> sup = new Supplier<Employee>() {
@Override
public Employee get() {
return new Employee();
}
};
System.out.println("*******************"); Supplier<Employee> sup1 = () -> new Employee();
System.out.println(sup1.get()); System.out.println("*******************"); Supplier<Employee> sup2 = Employee :: new;
System.out.println(sup2.get());
} //Function中的R apply(T t)
@Test
public void test2(){
Function<Integer,Employee> func1 = id -> new Employee(id);
Employee employee = func1.apply(1001);
System.out.println(employee); System.out.println("*******************"); Function<Integer,Employee> func2 = Employee :: new;
Employee employee1 = func2.apply(1002);
System.out.println(employee1); } //BiFunction中的R apply(T t,U u)
@Test
public void test3(){
BiFunction<Integer,String,Employee> func1 = (id,name) -> new Employee(id,name);
System.out.println(func1.apply(1001,"Tom")); System.out.println("*******************"); BiFunction<Integer,String,Employee> func2 = Employee :: new;
System.out.println(func2.apply(1002,"Tom")); }
4.数组引用格式:
数组类型[] :: new
5.数组引用举例:
//Function中的R apply(T t)
@Test
public void test4(){
Function<Integer,String[]> func1 = length -> new String[length];
String[] arr1 = func1.apply(5);
System.out.println(Arrays.toString(arr1)); System.out.println("*******************"); Function<Integer,String[]> func2 = String[] :: new;
String[] arr2 = func2.apply(10);
System.out.println(Arrays.toString(arr2)); }
最新文章
- 前端学HTTP之客户端识别和cookie
- 网购vs实体店购物 [20161226]
- BZOJ4607 : [PA2015 Final]Edycja
- 设置 tableview 的背景颜色,总是不生效
- (转) CCTextFieldTTF输入框
- 函数式编程之block
- 图形化Cisco设备管理实践(附安装配置视频)
- android中getSystemService详解
- HDU 2064 汉诺塔III
- debian+nginx配置初探--php环境、反向代理和负载均衡
- pytorch安装(使用pip3装到conda环境下)
- java项目 在 linux ubuntu 上的部署相关
- Appium入门(7)__Appium Desired Capabilities
- 修改OBS为仅直播音频
- jquery实现点击复制到剪切板
- 在Linux系统中增加和删除用户
- Java中存储金额用什么数据类型?
- 转 web前端性能分析--分析篇
- angularJs的run方法操作
- laravel5.5源码笔记(四、路由)