Kotlin常见技术分享-01-相对于Java 的核心优势-空安全

空安全 (Null Safety)

kotlin 相比于 Java 的第一个核心技术优势 是 空安全。

Kotlin 在类型系统中集成了 空安全机制。

能够在编译时 检测潜在的 空指针 异常,

  • 编译时检查: kotlin 区分可空类型(如 String?) 和 非空类型(如 String )
  • 安全调用操作符: 提供?. 操作符, 可以在对象为空时 安全的 调用方法 或访问属性。 而不会引发一场。
  • Elvis 操作符: 提供 ?: 操作符
安全调用操作符(Safe Call Operator)示例
kotlin 复制代码
// Java 写法(容易出现 NullPointerException)
String name = user.getAddress().getCity().getName();
// 如果 getAddress() 或 getCity() 返回 null,就会抛出异常

// Kotlin 写法(安全调用)
val name = user.address?.city?.name
// 如果任何一个属性为 null,整个表达式返回 null,不会抛出异常
Elvis 操作符示例
kotlin 复制代码
// Kotlin 中使用 Elvis 操作符提供默认值
val name = user.name ?: "未知用户"
// 如果 user.name 为 null,则使用 "未知用户" 作为默认值

// 更复杂的 Elvis 操作符用法
fun getLength(name: String?): Int {
    return name?.length ?: 0  // 如果 name 为 null,返回 0
}

// Elvis 操作符还可以用于提前返回或抛出异常
fun processUser(user: User?) {
    val userName = user?.name ?: return  // 如果 user 或 name 为 null,直接返回
    println(userName)
}
对比 Java 的传统写法
kotlin 复制代码
// Java 中需要大量 null 检查
String name;
if (user != null && user.getAddress() != null && user.getAddress().getCity() != null) {
    name = user.getAddress().getCity().getName();
} else {
    name = "未知";
}

// Kotlin 简洁写法
val name = user?.address?.city?.name ?: "未知"
相关推荐
葡萄成熟时 !7 小时前
JAVA 常用API学习笔记
java·笔记·学习
Rain的Java大神之路8 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
石头猫灯9 小时前
WordPress wp2shell 漏洞链完整拆解流程
网络·数据结构·安全·web安全
吴声子夜歌9 小时前
Java面试题——基础(一)
java·开发语言
网安蟹佬霸9 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
南城以南溫暖如初1479 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
ltl10 小时前
TLS 1.3 工程实践:1-RTT 与 0-RTT 的安全权衡
安全
傻啦嘿哟10 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
码匠许师傅11 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试
mqiqe12 小时前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络