ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

第098篇 空安全与 Java 混编:平台类型的风险控制

第098篇 空安全与 Java 混编:平台类型的风险控制 上一节讲的是互操作的整体规则,本节专挑其中最"咬人"的一条单独深挖:空安全在混编工程里到底靠不靠谱。Kotlin 的可空类型是编译期检查,可 Java 侧的代码、第三方 SDK 的字节码、以及各种反射/序列化路径都不受这套检查保护。面试里问"你怎么保证混编项目里不出现 NPE",背"用?.和?:"是及格线,能讲清信任边界在哪、该怎么设防,才是及格线以上。先把结论放在前面:混编工程里的空安全是"类型系统 + 运行时断言 + 架构约定"三层防线,缺一层就会漏。①类型层:Kotlin 侧尽量用非空类型,把可能为空的返回值包进Result/sealed;②断言层:对 Java 与第三方返回值第一时间归一化(requireNotNull或包成 Kotlin 非空类型),把风险挡在边界;③约定层:禁止在项目里裸用!!,确需使用必须在旁边注释写清"为何非空"。机制拆解先看 Kotlin 为什么能挡。val name: String = user.name若name可能为 null,编译期就报错。但这套检查有三个天然漏洞:1.@Nullable注解只对工具生效。@Nullable/@NotNull是给 IDE 与 lint 用的元数据,Java
返回列表