Tag: 可为空

有没有办法使用默认值的非可选参数时通过null?

例如,如果我有以下数据类: data class Data( val name: String = "", val number: Long = 0 ) 和可以返回null函数: fun newName(): String? {} fun newNumber(): Long? {} 我知道我可以使用下面的函数的值,如果它们不为null : val newName = newName() val newNumber = newNumber() val data = Data( if (newName != null) newName else "", if (newNumber != null) newNumber else 0 ) 但是,有没有办法只是使用Data类的构造函数中指定的默认值,当值为null ? […]

我怎样才能重写一个java方法,并改变参数的可空性?

我重写了Java库中的一个方法,并且该函数的参数被注释为@NonNull 。 但是,在调用该方法时,参数经常以null值出现。 当我重写Kotlin中的方法时,它迫使我遵守@NonNull注释并将该参数标记为不可空。 当然,Kotlin在运行时抛出一个异常,当参数带有空值时。 有什么方法可以重写Kotlin中的方法,并忽略@NonNull注释? 具体来说,我使用Android的appcompat库。 该方法在AppCompatActivity.java中 @CallSuper public void onSupportActionModeFinished(@NonNull ActionMode mode) { } Kotlin中的覆盖: override fun onSupportActionModeFinished(mode: ActionMode) { super.onSupportActionModeFinished(mode) }

用Kotlin在RxJava中处理可空类型

在Java中使用RxJava2时,我有map()过滤自动发出空值的好处。 然而,Kotlin中的可空类型最终会做这样的事情: val loadConferencesSingle = service.getConferences() .map { it.conferences ?: listOf<Conference>() } 在这种情况下调用service.getConferences()是一个单一的发射ConferecesResponse看起来像 data class ConferencesResponse(val conferences: List<Conference?>? = null) 因此,如果完整的会议发布清单是空的,我最终使用猫王操作员发出一个空列表。 在map发射null是不可能的。 有谁有线索,如何用Kotlin在RxJava中更好地处理可空类型? 我已经喜欢这个解决方案和它的简洁,但是我觉得有更好的方法来处理这个问题。