You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中`null!!`代码为何被允许?IDE无报错原因咨询

Kotlin中null!!代码的编译合法性解析

这段代码是可以通过编译的,核心原因和Kotlin的空安全设计、!!操作符的特性直接相关:

  • 非空断言操作符的规则:!!是Kotlin提供的非空断言工具,它的作用是告诉编译器"我确认这个值绝对不为空,若为空就抛出空指针异常"。编译器不会对null使用!!的情况做拦截——因为它默认你是主动选择接受运行时风险的。
  • 类型兼容性:函数声明返回ResponseEntity<*>,而null!!在编译阶段的类型会被推断为Nothing。Nothing是Kotlin中特殊的底层类型,它是所有类型的子类型,因此可以适配任何返回类型要求,编译器不会因为类型不匹配报错。
  • 运行时的实际行为:虽然编译能通过,但这段代码在运行时会立刻抛出NullPointerException,本质是开发者主动触发了空指针异常。

内容的提问来源于stack exchange,提问作者Prashant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:44:53