Bonjour.
Je cherche à faire, en Java, une map dont la clé serait une action et l'objet une méthode de ma classe.
Quelque chose qui ressemble à ça, dans l'idée :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class ClientService { public void create(String name, String env, Client input) {} public void update(String name, String env, Client input) {} public void remove(String name, String env, Client input) {} public enum Action { Create, Update, Remove }; static Map<Action, Runnable> doAction = new HashMap<> { {put(Action.Create, ClientService::create);}, {...} }; }
Mais ça ne passe pas (The type ClientService does not define create() that is applicable here).
J'essaye avec des lambdas :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 static Map<Action, Runnable> doAction = new HashMap<> { {put(Action.Create, (String name, String env, Client input) -> create(name, env, input);)} }; }
Erreur : Lambda expression's signature does not match the signature of the functional interface method run()
Je crois comprendre que Runnable impose une fonction sans paramètres. Comment gérer plusieurs paramètres dans mes fonctions avec des lambdas ?
Je suis en Java 8 + Spring Boot.
Partager