avatar

java8新特性 —— 方法引用

方法与构造函数引用

通过 :: 关键字来传递方法或者构造器的引用。比如引用 Person类的构造器可以用 Person::new 来实现。下面演示如何通过工厂模式 + 引用来实现。

创建一个 Person实体类,包含默认无参构造和一个有参构造

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Person {
String name;
int age;
public Person () {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}

@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}

创建一个用来创造 Person对象的工厂接口:

1
2
3
4
@FunctionalInterface
public interface PersonFactory<P extends Person> {
P create(String name, int age);
}

编写测试类来进行测试:

1
2
3
4
5
6
7
8
@Test
public void personTest() {
// 引用 Person类的默认构造器
PersonFactory<Person> factory = Person::new;
Person person = factory.create("张三", 20);
System.out.println(person);
// Person{name='张三', age=20}
}
文章作者: 惆怅客
文章链接: https://www.songhailong.com/articles/51e098c1/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 惆怅客

评论