JDK8 引用(方法引用、构造器引用、数组引用)

本文详细介绍了Java中Lambda表达式和方法引用的基本概念、语法格式及应用场景,包括对象和类的方法引用、构造器引用及数组引用,帮助读者深入理解并掌握这些高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* @Description:

* 一、方法引用

* 如果lambda 体中的内容有方法已经实现了,我们可以使用“方法引用”

* (可以理解为方法引用是 Lambda表达式的另外一种表现形式)

* 主要有三种语法格式:

* 对象 ::实例方法名

* 类:: 静态方法名

* 类::实例方法名

* 注 : Lambda 体中调用方法的参数列表和返回类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致!

* 如果lambda 参数列表中的第一参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用className::method

*

*

*

* 二、构造器引用

* className::new

* 注:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表参数保持一致

*

* 三、数组引用

*

* @author:zhangys

* @date:Created in 19:46 2018/12/30

* @Modified By:

*/

public class Demo2 {

 

/**

* 对象 ::实例方法名

*/

@Test

public void test1(){

Consumer<String> con = (x) -> System.out.println(x);

 

PrintStream ps = System.out;

Consumer<String> con1 = ps :: println;

 

con1.accept("ssss");

 

 

PrintStream ps1 = System.out;

Consumer<String> con2 = (x) -> ps1.println(x);

}

 

 

@Test

public void test2(){

Employee emp = new Employee();

Supplier<String> sup = () -> emp.getName();

String str = sup.get();

System.out.println(str);

 

Supplier<Integer> sup2 = emp::getAge;

Integer num = sup2.get();

System.out.println(num);

}

 

/**

* 类:: 静态方法名

*/

 

 

@Test

public void test3(){

Comparator<Integer> com = (x,y) -> Integer.compare(x,y);

Comparator<Integer> com1 = Integer::compareTo;

}

 

/**

* 类名::实例方法名

*/

 

@Test

public void test4(){

BiPredicate<String,String> bp = (x,y) -> x.equals(y);

 

BiPredicate<String,String> bp2 = String::equals;

}

 

/**

* 构造器引用

*/

@Test

public void test5(){

Supplier<Employee> sup = () -> new Employee();

sup.get();

 

 

//构造器引用方式

Supplier<Employee> sup2 = Employee::new;

Employee e = sup2.get();

System.out.println(e);

}

 

@Test

public void test6(){

Function<Integer,Employee> fun = (x) -> new Employee(x);

Employee e = fun.apply(101);

System.out.println(e);

 

BiFunction<Integer,Integer,Employee> bf = Employee::new;

}

 

/**

* 数组引用

*/

@Test

public void test7(){

Function<Integer,String[]> fun = (x) -> new String[x];

String[] strs = fun.apply(10);

System.out.println(strs.length);

 

Function<Integer,String[]> fun2 = String[]::new;

String[] strs2 = fun.apply(12);

System.out.println(strs2.length);

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值