0
votes

Cartographie des expressions Lambda qui retourne booléens

J'essaie de cartographier une chaîne aux expressions Lambda. Les expressions prennent une variable (carte) et renvoyent Faux ou exécutent une getOgefault sur la variable de carte donnée. Mais pour une raison quelconque, je reçois des erreurs.

Map<String, Runnable> order_function = new HashMap<>();
order_function.put("AlternativesValues", (Map x) -> { return false; });
order_function.put("AlternativesConstituent", (Map x) -> { x.getOrDefault("orderCloseCons", false); });


5 commentaires

Pourquoi pensez-vous, runnable est une interface appropriée pour une fonction qui nécessitera une carte comme entrée et retourner un booléen ?


@Holger je suis toujours tout à fait nouveau à Java, alors je ne suis pas sûr lequel est plus approprié, désolé :(


Vous remarquerez lorsque vous essayez réellement de invoquer la méthode fonctionnelle. Cette méthode look Convient à votre tâche?


@Holger j'ai vu une implémentation similaire en ligne qui a été utilisée courante, donc je suis allé avec elle. Utiliser la fonction serait plus approprié?


Vous pouvez passer par Ces interfaces et choisir le plus approprié. Le problème est que «essayer de cartographier une chaîne à des expressions Lambda» n'est pas un problème de programmation utile réel. Lorsque vous commencez avec ce que vous avez besoin de la carte, vous reconnaîtrez rapidement ce qui est utile et ce qui n'est pas. Si l'interface est implémentée via des expressions Lambda ou des classes ordinaires, n'est pas pertinente.


3 Réponses :


0
votes

Peut-être que vous vouliez utiliser fonction au lieu de exécutable : xxx


1 commentaires

Ou mappe > , pour exclure null résultats ...



2
votes

the Runnable code> ne renvoie rien. Si vous développez la Lambda à la mise en œuvre de la classe anonyme, vous verrez le type Void code> est le type de retour:

Map<String, Predicate<Map<? ,Boolean>>> order_function = new HashMap<>();
order_function.put("AlternativesValues", x -> false);
order_function.put("AlternativesConstituent", map -> map.getOrDefault("orderCloseCons", false));


0 commentaires

0
votes

S'ils veulent être des constantes, vous pouvez utiliser Enum code> comme ci-dessous.

OrderFunctions.ALTERNATIVES_CONSTITUENT.getOrderFunction().apply(someMap);


0 commentaires