Java 8 lambda Nul argument

Disons que j'ai fonctionnelles suivantes de l'interface en Java 8:

interface Action<T, U> {
   U execute(T t);
}

Et pour certains cas, j'ai besoin d'une action sans arguments ou le type de retour. Alors j'écris
quelque chose comme ceci:

Action<Void, Void> a = () -> { System.out.println("Do nothing!"); };

Cependant, il me donne une erreur de compilation, j'ai besoin d'écrire comme

Action<Void, Void> a = (Void v) -> { System.out.println("Do nothing!"); return null;};

Ce qui est laid. Est-il possible de se débarrasser de la Void type de paramètre?

  • Jetez un oeil à stackoverflow.com/questions/14319787/...
  • Si vous avez besoin d'une action, comme vous l'avez défini, il n'est pas possible. Cependant, votre premier exemple pourrait tenir dans une Runnable, qui que vous êtes à la recherche pour Runnable r = () -> System.out.println("Do nothing!");
  • Je ne veux pas utiliser un Consommateur comme suggéré dans ce post.
  • le problème est que l'Exécutable ne peut pas être un sous-type de mon type de fonction.
  • En java, si dans la signature de la méthode que vous avez le type de retour - vous devez retourner quelque chose dans la méthode de la mise en œuvre.
  • Matt réponse du fait que les types de travail, mais ce qui ne l'appelant lorsqu'il obtient une valeur de retour null?
  • Vous pourriez croiser les doigts et espérons que les suggestions 2 & 3 dans ce post acceptée pour Java 9!

InformationsquelleAutor Wickoo | 2015-04-29