我明白为什么推断的返回类型max({})
是Null
(我认为该函数如何与空/可能为空/非空的可迭代对象一起工作真是太棒了),但为什么使用空的命名参数列表 - <code>max{} - 推断返回Nothing
?为什么这些情况不同?这是故意的吗?
这编译并运行得很好,
Nothing foo = max{};
尽管我预计如果它实际评估它会立即失败nothing
。既然Nothing
是一切的子类型,你甚至可以这样做,
Integer bar = max{};
并且编译器不会抱怨,但运行它会产生一个java.lang.NullPointerException
. 什么?!我以为我们永远不应该在锡兰看到这种情况!