Próbuję zadeklarować i zdefiniować większą mapę skrótu na raz. Oto jak to zrobić:Java 8: Inicjalizacja HashMap z wyrażeń lambda
public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
put(x, y);
put(x, y);
}};
Ale gdy próbuję użyć wyrażenia lambda w ciele put
, mam trafienia na zaćmienie warrning/błędu. W ten sposób używam lambda w HashMap:
public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
put(0,() -> { return "nop"; });
put(1,() -> { return "nothing...."; });
}};
Eclipse podkreśla całą część lambda zaczynając od przecinka przed. Komunikaty o błędach:
Syntax error on token ",", Name expected
Syntax error on tokens, Expression expected instead
czy ktoś wie co robię źle? Czy inicjalizacja przez wyrażenie lambda jest dozwolona w HashMap
? Proszę pomóż.
ciekawe pytanie! +1 – fge
Kompiluje w 'javac'. Czy jesteś pewien, że Java 8 jest włączona dla twojego projektu? – axtavt
Wygląda na to, że kompilujesz wcześniej niż w wersji 8 – Reimeus