Zaczynam od wyrażeń lambda w języku Java i jest coś, co uważam za dziwaczne i jestem pewien, że robię coś nie tak, lub ma to obejście.Kompilator wieloliniowy do porównania lambda
Aby zdefiniować komparator, mogę zrobić:
col.setComparator((CustomCell o1, CustomCell o2) ->
((Comparable) o1.getValue()).compareTo(o2.getValue())
);
Który jest wielki, jeśli jednak po prostu dodać dwa "{". I pojawia się błąd kompilacji:
col.setComparator((CustomCell o1, CustomCell o2) -> {
((Comparable) o1.getValue()).compareTo(o2.getValue());
});
Błąd nie jest związany z "{", ale setComparator
:
The method setComparator(Comparator<CustomCell>) in the type
TableColumnBase<CustomParentCell,CustomCell> is not applicable for the arguments
((CustomCell o1, CustomCell o2) -> {})
Próbowałem za pomocą multilinii oświadczenia przed dla actionevents i to działa:
setOnAction(event -> {
// do something
});
Czy to dlatego, że ma tylko jeden argument?
Dziękuję. Tak, to jest powód. Błąd, który otrzymałem, nie był zbyt pomocny. – luanjot