java的方法引用详解
Java的方法引用是一种简化Lambda表达式的语法,可以将方法作为参数传递给函数式接口。方法引用可以让代码更加简洁、易读,并且提高代码的可维护性和可重用性。
Java的方法引用可以分为以下四种类型:
-
静态方法引用:引用一个静态方法,例如:ClassName::staticMethodName。
-
实例方法引用:引用一个实例对象的方法,例如:object::instanceMethodName。
-
构造方法引用:引用一个构造方法,例如:ClassName::new。
-
数组引用:引用一个数组对象的构造方法,例如:TypeName[]::new。
下面分别对这四种类型进行详细介绍:
- 静态方法引用
静态方法引用是引用一个静态方法,语法格式为:ClassName::staticMethodName。例如:
public class Test {
public static void print(String str) {
System.out.println(str);
}
public static void main(String[] args) {
Consumer<String> consumer = Test::print;
consumer.accept("hello world");
}
}
上面的代码中,我们定义了一个静态方法print,并将它作为参数传递给Consumer函数式接口。在main方法中,我们使用Test::print的方式引用了print方法,并将引用赋值给consumer对象。最后,我们调用consumer.accept方法,传入字符串"hello world",即可调用print方法打印字符串。
- 实例方法引用
实例方法引用是引用一个实例对象的方法,语法格式为:object::instanceMethodName。例如:
public class Test {
public void print(String str) {
System.out.println(str);
}
public static void main(String[] args) {
Test test = new Test();
Consumer<String> consumer = test::print;
consumer.accept("hello world");
}
}
上面的代码中,我们定义了一个实例方法print,并创建了一个Test对象test。在main方法中,我们使用test::print的方式引用了print方法,并将引用赋值给consumer对象。最后,我们调用consumer.accept方法,传入字符串"hello world",即可调用print方法打印字符串。
- 构造方法引用
构造方法引用是引用一个构造方法,语法格式为:ClassName::new。例如:
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Supplier<User> supplier = User::new;
User user = supplier.get();
user.setName("张三");
user.setAge(18);
System.out.println(user.getName() + " " + user.getAge());
}
// getter and setter
}
上面的代码中,我们定义了一个User类,并在其中定义了一个有参构造方法。在main方法中,我们使用User::new的方式引用了User的构造方法,并将引用赋值给supplier对象。最后,我们调用supplier.get方法,即可创建一个User对象,并设置其属性值。
- 数组引用
数组引用是引用一个数组对象的构造方法,语法格式为:TypeName[]::new。例如:
public class Test {
public static void main(String[] args) {
Function<Integer, String[]> function = String[]::new;
String[] arr = function.apply(10);
System.out.println(arr.length);
}
}
上面的代码中,我们定义了一个Function函数式接口,并使用String[]::new的方式引用了一个字符串数组的构造方法。在main方法中,我们通过function.apply方法创建了一个长度为10的字符串数组,并打印了其长度。
总结
方法引用是一种简化Lambda表达式的语法,能够让代码更加简洁、易读,并且提高代码的可维护性和可重用性。Java中的方法引用可以分为四种类型:静态方法引用、实例方法引用、构造方法引用和数组引用。在实际开发中,我们可以根据具体的情况选择不同类型的方法引用,以达到最佳的效果
原文地址: https://www.cveoy.top/t/topic/dqDf 著作权归作者所有。请勿转载和采集!