java8 构造函数引用_方法和构造函数引用

# 方法和构造函数引用

上面的代码实例可以通过静态方法引用,使之更加简洁:

```

Converter converter = Integer::valueOf;

Integer converted = converter.convert("123");

System.out.println(converted); // 123

```

Java 8 允许你通过::关键字获取方法或者构造函数的的引用。上面的例子就演示了如何引用一个静态方法。而且,我们还可以对一个对象的方法进行引用:

```

class Something {

String startsWith(String s) {

return String.valueOf(s.charAt(0));

}

}

Something something = new Something();

Converter converter = something::startsWith;

String converted = converter.convert("Java");

System.out.println(converted); // "J"

```

让我们看看如何使用::关键字引用构造函数。首先我们定义一个示例bean,包含不同的构造方法:

```

class Person {

String firstName;

String lastName;

Person() {}

Person(String firstName, String lastName) {

this.firstName = firstName;

this.lastName = lastName;

}

}

```

接下来,我们定义一个person工厂接口,用来创建新的person对象:

```

interface PersonFactory

{

P create(String firstName, String lastName);

}

```

然后我们通过构造函数引用来把所有东西拼到一起,而不是像以前一样,通过手动实现一个工厂来这么做。

```

PersonFactory personFactory = Person::new;

Person person = personFactory.create("Peter", "Parker");

```

我们通过Person::new来创建一个Person类构造函数的引用。Java编译器会自动地选择合适的构造函数来匹配PersonFactory.create函数的签名,并选择正确的构造函数形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值