Multiline lambda comparateur
Je commence avec les expressions lambda en Java et il y a quelque chose que je considère comme bizarre et je suis sûr que je suis en train de faire quelque chose de mal ou qu'il a une solution de contournement.
Pour définir un élément de comparaison, je peux le faire:
col.setComparator((CustomCell o1, CustomCell o2) ->
((Comparable) o1.getValue()).compareTo(o2.getValue())
);
Qui est idéal, néanmoins, si je viens d'ajouter deux "{". J'obtiens une erreur de compilation:
col.setComparator((CustomCell o1, CustomCell o2) -> {
((Comparable) o1.getValue()).compareTo(o2.getValue());
});
L'erreur n'est pas liée à la "{", mais à setComparator
:
The method setComparator(Comparator<CustomCell>) in the type
TableColumnBase<CustomParentCell,CustomCell> is not applicable for the arguments
((CustomCell o1, CustomCell o2) -> {})
J'ai essayé d'utiliser le multiligne déclarations avant pour des actionevents et il fonctionne:
setOnAction(event -> {
//do something
});
Est-ce parce qu'il n'a qu'un argument?
OriginalL'auteur luanjot | 2014-11-26
Vous devez vous connecter pour publier un commentaire.
La méthode de mise en œuvre avec
setOnAction
estIl a un type de retour de
void
: c'est à dire qu'il ne retourne rien:La méthode de mise en œuvre avec
setComparator
estqui renvoie une valeur. Pour utiliser la forme longue, vous devez avoir un retour explicite déclaration pour les méthodes qui renvoient une valeur:
OriginalL'auteur James_D