【发布时间】:2017-10-15 18:31:59
【问题描述】:
请记住,我正在加强函数式编程,呵呵。
我已经定义了一个这样的可变列表:
var list: MutableList<E>? = null
所以,当我尝试使用 list!!.add(E()) 时,会抛出一个
kotlin.KotlinNullPointerException.
我知道这是因为我在定义它时将 null 分配给该列表,但是没有得到正确的解决方案来思考函数式编程方面如何解决这个问题。 你能建议我一些代码或概念来实现这种情况吗?
【问题讨论】:
-
您是在问如何存储
null以外的内容吗?如何在不使用!!的情况下访问可为空的对象?这两个都包含在语言文档中。 -
我想在列表中存储一个新项目,但是当我尝试使用我在 java 中存储项目的方法 .add 时会引发异常。
-
但是你一开始没有列表,你有
null。 Java 的主要变化只是 Kotlin 为您提供了不可为空引用的选项,并且将其设为默认值。你必须选择null,并且未经检查的访问不会编译(你用!!告诉编译器你保证它不是null,这是一个谎言),所以意外拥有一个相当困难的NullPointerException. -
是的,就是这样,我能做些什么来解决这类问题。在可能的情况下,我不知道这个列表会很长,所以我可以设置一个固定大小。简而言之,我可以在之前初始化它,或者不知道该怎么做。
-
一开始你可能甚至不需要它可以为空,但不管怎样,create an object 而不是使用
null,就像在 Java 中一样。