Java 7
List<Person> personList = Person.createShortList();
// Sort with Inner Class
Collections.sort(personList, new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return p1.getSurName().compareTo(p2.getSurName());
}
});
Java 8
Collections.sort(personList, (Person p1, Person p2) ->
p1.getSurName().compareTo(p2.getSurName()));
for (Person p : personList) {
p.printName();
}
如果接口(interface) Comparator
有 2 个方法而不是只有一个 compare
是否可以使用 Lambda?
例如
public interface Comparator<T> {
int compare(T o1, T o2);
int compareTest(T o1, T o2);
}
最佳答案
函数式接口(interface)只需要一个抽象方法,而您的接口(interface)则不需要。但是,您可以为其中一种方法提供默认实现。在那种情况下它会起作用:
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
default int reverseCompare(T o1, T o2) {
return compare(o2, o1);
}
}
关于java - Lambda 表达式在一个接口(interface)上工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38325460/