のJava 7ラムダ式は1つのインターフェイスで動作しますか?
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();
}
インタフェースComparator
は2つの方法があり、1つだけでなくcompare
それはラムダを使用することが可能である場合は?例えば
public interface Comparator<T> {
int compare(T o1, T o2);
int compareTest(T o1, T o2);
}
ラムダは、ちょうど1つの抽象メソッドを持つインターフェイスを実装する必要があります。任意の数のデフォルトメソッドを持つことができます。 –
ところで、自分自身の繰り返しを避けるために 'Collections.sort(personList、Comparator.comparing(p - > p.getSurName()));'を使うことができます。 'Collections.sort(PersonList、Comparator.comparing(Person :: getSurName));' – Holger