您好,登录后才能下订单哦!
方法引用(Method Reference)是 Java 8 引入的一种简化 Lambda 表达式的写法
下面是一个实例分析,展示了如何在 Java 代码中使用方法引用。
假设我们有一个 Person
类:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
现在,我们有一个 filter
方法,它接受一个 List<Person>
和一个 Predicate<Person>
作为参数,并返回一个新的列表,其中包含满足条件的 Person
对象。
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
people.add(new Person("Charlie", 35));
Predicate<Person> isAdult = person -> person.getAge() >= 18;
List<Person> adults = filter(people, isAdult);
System.out.println(adults);
}
public static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
List<T> result = new ArrayList<>();
for (T item : list) {
if (predicate.test(item)) {
result.add(item);
}
}
return result;
}
}
在这个例子中,我们使用了 Lambda 表达式 person -> person.getAge() >= 18
来定义 isAdult
变量。但是,我们可以使用方法引用来简化这个表达式。在这种情况下,我们可以使用以下方法引用:
import java.util.function.Predicate;
// ...
Predicate<Person> isAdult = Person::isAdult;
这里,我们使用了 Person::isAdult
方法引用,它引用了 Person
类中的 isAdult
方法。注意,为了使这个例子成立,我们需要在 Person
类中添加一个 isAdult
方法:
public boolean isAdult() {
return getAge() >= 18;
}
现在,我们的代码使用了方法引用 Person::isAdult
来替换 Lambda 表达式。这使得代码更简洁,同时仍然实现了相同的功能。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。