Cześć, piszę projekt na studia z Javy i przyjmuję kody które następnie przekierowują klienta do danej metody.
Chciałbym zastąpić drabinkę IF, myślałem o mapie ale nie jest ona w stanie przyjąć wartości String oraz Object/Void.
Mój kod:
public void run() {
try {
DataInputStream disCode = new DataInputStream(socket.getInputStream());
String code = disCode.readUTF();
System.out.println("Serwer: Odebrałem kod: " + code);
if (code.equals("SQL")) {
CodeSQL();
}
if (code.equals("Login")) {
CodeLogin();
}
if (code.equals("Communicate")) {
CodeCommunicate();
}
if (code.equals("AddFlight")) {
CodeAddFlight();
}
if (code.equals("CheckFlight")) {
CodeCheckFlight();
}
if(code.equals("FinishedFlights")){
CompletedFlights();
}
else {
System.out.println("Serwer: Błędny kod!");
run();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Próbowałem:
Map<String, Void> codes = Map.of(
"SQL", CodeSQL(),
"Login", CodeLogin(),
"Communicate", CodeCommunicate(),
"AddFlight", CodeAddFlight(),
"CheckFlight", CodeCheckFlight(),
"FinishedFlight", CodeFinishedFlights()
);
Oraz:
Map<String, Object> codes = Map.of(
"SQL", CodeSQL(),
"Login", CodeLogin(),
"Communicate", CodeCommunicate(),
"AddFlight", CodeAddFlight(),
"CheckFlight", CodeCheckFlight(),
"FinishedFlight", CodeFinishedFlights()
);