java函数名加re_Java8函数式编程入门

方法引用

方法引用是Java8中提出的用来简化Lambda表达式的一种手段,它通过类名和方法名来定位一个静态方法或者实例方法。方法引用使用"::"定义,"::"的前半部分表示类名或者实例名,后半部分表示方法名称,如果是构造器函数,则使用new表示。

1、静态方法引用:ClassName::methodName

List strs = Arrays.asList("aa","bb","cc");

strs.forEach(System.out::println);

输出结果:

797a601ed00287e703ea645347c47403.png

2、实例方法引用:instanceRefence::methodName

class Printer {

void print(){

System.out.println("instanceRefence::methodName");

}

private void printInfo(){

//实例方法引用

new Thread(this::print);

}

}

//测试

private void test() {

Printer p = new Printer();

p.print();

}

输出结果:

fce99106b41f42f33b93ec0ca0a4ccca.png

3、构造方法引用:Class::new

public class Test {

class User {

String username;

User(String username){

this.username = username;

}

public String getUsername(){

return username;

}

}

@FunctionalInterface

interface UserFactory {

T create(String username);

}

public static void main(String[] args) {

Test t = new Test();

t.test();

}

private void test() {

UserFactory uf = User::new;

List users = new ArrayList<>();

for (int i = 0; i < 5; ++i) {

users.add(uf.create("user"+i));

}

users.stream().map(User::getUsername).forEach(System.out::println);

}

}

UserFactory作为User的工厂类,是一个函数式接口。当使用User::new创建接口实例时,系统会根据UserFactory.create()的函数签名选择合适的User构造函数。在创建UsrFactory实例后,对UsrFactory.create()的调用都会委托给User的实际构造函数进行,从而创建User对象实例。User::getUsername表示User类的实例方法。

输出结果:

6a876ac06b7054c9a1b291b15f0ef4dc.png

练习静态方法引用,实例方法引用,构造方法引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值