Kotlin 中 Deque 的 peek() 方法为什么是非空的


#1

在 Java 中,Deque 的 peek() 方法规定的是如果 Deque 为空的话,那 peek() 应该返回 null。而 Deque 的实现类 LinkedList 确实是这样做的。
image

但我发现在 Kotlin 中,Deque 的 peek() 方法的返回值被规定为非空,这是为什么?这样会不会导致一些问题?
image
image


#2
val stack = LinkedList<Int?>() as Deque<Int?>

这应该指定的泛型有关,如果泛型指定为 nullable 的话 peek() 也是返回一个 nullable 的值。

但我的思考是,在 Java 中除了第一个元素是 null 的情况外,如果 Deque 没有元素,那也会返回 null,Kotlin 这种处理方式和 Java 会不会出现什么不兼容的问题?


#3

Int! 是平台类型,你想它可空就可空,你想它非空就非空


京ICP备16022265号-2 Kotlin China 2017 - 2018