Dart语言空安全概念与原理详解
一、什么是空安全?
空安全 是 Dart 语言的一项强大特性,其核心目标是在编译期而非运行期捕获空值引用错误(即 NullPointerException 或 Dart 中的 NoSuchMethodError 在 null 上被调用时)。
在空安全引入之前,任何变量都可以被设置为 null。当你调用一个对象的方法或访问其属性时,如果这个对象是 null,就会在运行时抛出错误,导致应用崩溃。
空安全通过改变类型系统,将 null 从所有类型的默认域中移除,从而从根本上解决了这个问题。
二、核心概念:可空与非空类型
空安全将类型系统一分为二:
-
非空类型
-
声明:直接使用类型名,如
String,int,MyClass。 -
含义:变量永远不能包含
null。从它被声明到整个生命周期内,它都必须持有一个有效的值。 -
示例:
String name = 'Alice';//name不能为null。
-
-
可空类型
-
声明:在类型名后加上
?,如String
-
