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