Tôi đang cố gắng khai báo và xác định bản đồ băm lớn hơn cùng một lúc. Đây là cách tôi làm điều đó:Java 8: Khởi tạo HashMap với các biểu thức lambda
public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
put(x, y);
put(x, y);
}};
Tuy nhiên, khi tôi cố gắng sử dụng các biểu thức lambda trong cơ thể của put
, tôi chạm vào nhật thực warrning/lỗi. Đây là cách tôi sử dụng lambda trong HashMap:
public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
put(0,() -> { return "nop"; });
put(1,() -> { return "nothing...."; });
}};
Eclipse gạch dưới toàn bộ phần lambda bắt đầu bằng dấu phẩy trước đây. Thông báo lỗi:
Syntax error on token ",", Name expected
Syntax error on tokens, Expression expected instead
Có ai biết tôi đang làm gì sai? Được khởi tạo bởi biểu thức lambda được cho phép trong HashMap
? Hãy giúp tôi.
Câu hỏi thú vị! +1 – fge
Biên dịch trong 'javac'. Bạn có chắc chắn rằng Java 8 được kích hoạt cho dự án của bạn? – axtavt
Dường như bạn đang biên dịch với một trình biên dịch trước đó thì phiên bản 8 – Reimeus