我试图一次性声明和定义大型哈希表,具体做法如下:
public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
put(x, y);
put(x, y);
}};
但是,当我尝试在put
方法的主体中使用lambda表达式时,遇到了Eclipse警告/错误。这是我在HashMap中使用lambda的方式:
public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
put(0, () -> { return "nop"; });
put(1, () -> { return "nothing...."; });
}};
Eclipse会将逗号之前的整个Lambda表达式部分进行下划线标记。错误信息:
Syntax error on token ",", Name expected
Syntax error on tokens, Expression expected instead
有人知道我做错了什么吗?在HashMap
中是否允许使用lambda表达式进行初始化?请帮忙。
javac
中编译。您确定您的项目启用了Java 8吗? - axtavtHashMap
字段,请参考此问题和答案:如何使用lambda初始化map? - Mike Nakis