当前位置: 首页 > 知识库问答 >
问题:

Kotlin从空值返回空安全值

樊腾
2023-03-14

我有这个功能

fun <T> safe(t: T?): T {
    return Optional.ofNullable(t).orElseThrow { IllegalStateException("safe value should not be null") }
}

我用它来表示,我知道T现在不是空的,所以给我它的非空的形式。

class SomeType(val someOtherType: SomeOtherType?)
class SomeThirdType(val someOtherType: SomeOtherType)
class SomeType(val someOtherType: SomeOtherType?) {
  fun doSomeDamage(): SomeThirdType {
    //some work
    return SomeThirdType(safe(someOtherType))
  }
}

我对safe函数不满意,有更好的方法吗?我觉得我错过了一些基本的东西

共有1个答案

叶健柏
2023-03-14

Kotlin已经为您提供了处理可空类型的工具。我只会使用范围函数和/或猫王操作符。在你的具体情况下,猫王操作员似乎足够了。

class SomeType(val someOtherType: SomeOtherType?) {
  fun doSomeDamage(): SomeThirdType {
    //some work
    return SomeThirdType(someOtherType ?: error("someOtherType should not be null"))
  }
}
 类似资料:
  • 我的预览在方法中调用时返回null。测试类确实扩展了,因为它被保存在

  • 当我在android Studio中集成OpenCV进行眼睛检测时。集成后消息打印Opencv安装成功消息生成,但出现错误。 无法从加载器加载detection_based_trackerdalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/com.example.admin.lanskart-2.apk],nativeLibr

  • 这一行是: 我在和上尝试了和,但仍然给出相同的错误

  • 如何避免对类的可选属性使用 我应该创建一个局部变量吗?我认为使用不是一个好的做法

  • 我正在玩新的Android设计库。折叠工具栏布局完美运行。但是,我无法将工具栏的默认状态设置为折叠。 我正在尝试实现这里和这里显示的解决方案 我在我的活动摘要中调用以下代码: 但是,params返回的行为为null。我的xml代码和这里一样,除了我没有使用drawer和CordinatorLayout是我的根布局。 编辑:我之前尝试过切换AppBarLayout。AppBarLayout的行为。S

  • 开发了一个使用第三方jar的rest服务。查看他们的代码,我发现他们正在使用ClassLoader.getSystemResource(“log4j.properties”)来检索数据。这段代码返回null,从今以后,我总是得到null指针异常。如果我在webphere中部署相同的代码8.5.5.7并设置服务器类路径,它可以正常工作。由于我在本地机器中使用Liberty,因此无法检索路径。 我还尝