小编hi.*_*ish的帖子

为什么不能为Java中的var关键字分配lambda表达式?

允许var在Java 10中分配如下字符串:

var foo = "boo";
Run Code Online (Sandbox Code Playgroud)

虽然不允许为其分配lambda表达式,例如:

var predicateVar = apple -> apple.getColor().equals("red");
Run Code Online (Sandbox Code Playgroud)

为什么不能推断的λ或方法引用类型时,它可以推断出休息等String,ArrayList,用户类等?

java lambda java-10

62
推荐指数
5
解决办法
3782
查看次数

为什么Map.of不允许空键和值?

在Java 9,新的工厂方法已经出台了List,SetMap接口.这些方法允许使用一行中的值快速实例化Map对象.现在,如果我们考虑:

Map<Integer, String> map1 = new HashMap<Integer, String>(Map.of(1, "value1", 2, "value2", 3, "value3"));
map1.put(4, null);
Run Code Online (Sandbox Code Playgroud)

如果我们这样做,上面是允许的,没有任何例外:

Map<Integer, String> map2 = Map.of(1, "value1", 2, "value2", 3, "value3", 4, null );
Run Code Online (Sandbox Code Playgroud)

它抛出:

Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.Objects.requireNonNull(Objects.java:221)
..
Run Code Online (Sandbox Code Playgroud)

我无法得到,为什么在第二种情况下不允许.

我知道HashMap可以将null作为键和值,但为什么在Map.of的情况下受限制?

同样的事情发生在的情况下java.util.Set.of("v1", "v2", null)java.util.List.of("v1", "v2", null).

java java-9

60
推荐指数
7
解决办法
1万
查看次数

标签 统计

java ×2

java-10 ×1

java-9 ×1

lambda ×1