JAVA新特性的方法引用
- 方法引用主要指通过方法的名字来指向一个方法而不需要为方法引用提供方法体,该方法的调用交给函数式接口执行
- 方法引用是在特定场景下lambda表达式的一种简化表示,可以进一步简化代码的编写使代码更加紧凑简洁,从而减少冗余代码
- 方法引用使用一对冒号 :: 将类或对象与方法名进行连接
常用使用方式:
- 对象的非静态方法引用
ObjectName :: MethodName
- 类的静态方法引用
ClassName :: StaticMethodName
- 类的非静态方法引用
ClassName :: MethodName
- 构造器的引用
ClassName :: new
- 数组的引用
TypeName[] :: new
代码:
public class Person{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void show() {
System.out.println("方法引用案例");
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class 引用 {
public static void main(String[] args) {
Person person = new Person("tb", 21);
Runnable runnable = person::show;
runnable.run();
Comparator<Integer> comparator = Integer::compareTo;
System.out.println(comparator.compare(10, 20));
Function<String, Integer> function = Integer::parseInt;
System.out.println(function.apply("456123") + 5);
BiFunction<String, Integer, Person> biFunction = Person::new;
System.out.println(biFunction.apply("tbtb", 2121));
Function<Integer, int[]> function1 = int[]::new;
System.out.println(Arrays.toString(function1.apply(5)));
}
}