鉴于以下情况:
Map<String, Object> map1 = new HashMap();
Map<String, String> map2 = new HashMap();
map2.put("Grp A", "a");
map2.put("Grp B", "b");
map1.put("Grp",map2);
Run Code Online (Sandbox Code Playgroud)
如何从map1中获取“ Grp A”值?
我正在做一些lambda表达式的实验,看到了一些我无法理解的行为.
Consumer consumer = (o1) -> {};
Object obj1 = consumer; // this two line working fine
Run Code Online (Sandbox Code Playgroud)
2行以上的代码时,我分配预期不抱怨任何事情consumer来 obj1.
但是,当我尝试将lambda直接分配给对象时,它开始给我一个编译错误.
Object obj2 = (o1) -> {}; // this line gives compilation error
Run Code Online (Sandbox Code Playgroud)
上面的代码行给出了一个错误:
此表达式的目标类型必须是功能接口.
我的问题是为什么我们不能直接将lambda分配给类型的引用变量Object?
编辑:我已经编辑了我的问题,因为有一个类似的问题已经提到但我的问题主要目标是确保为什么Object o1 = "Hello"会工作但不是lambda.