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

如何在Dart中检查对象是否为Null?附Java对比示例

在Dart中检查对象是否为Null的方法

首先你提供的Dart代码存在编译错误:Student类只定义了带参数的构造函数,直接调用Student student2 = new Student();会报错,因为没有对应的无参构造。我们先修正这个问题,再讲解空值检查的具体实现。

1. 修正Student类(添加无参构造)

先给Student类补充无参构造,或者给参数设置默认值,这样才能创建无参实例:

class Student {
  String name;
  num age;

  // 带参构造
  Student(this.name, this.age);
  // 无参构造,给属性设置默认值
  Student.empty() : name = '', age = 0;
}

2. 基础空值检查:!= null

你写的if(student2 != null)本身就是Dart中合法的空值检查方式,但要注意变量的可空类型声明:

  • 在Dart 2.12+的空安全模式下,默认类型是非空的(比如Student student2),此时student2不可能为null,检查!= null其实是冗余的,但语法上允许。
  • 如果变量可能为null,需要声明为可空类型(Student?),此时!= null检查才有意义。

完整示例代码

void main() {
  // 创建非空对象
  Student student1 = Student("Andrew", 21);
  Student student2 = Student.empty();

  // 对非空对象做null检查(语法合法但冗余)
  if (student2 != null) {
    print(student2.name);
  }

  // 声明可空类型变量,默认值为null
  Student? student3;
  // 检查是否为null,只有非空时才执行内部逻辑
  if (student3 != null) {
    print(student3.name);
  }
}

3. 空安全下的便捷语法糖

除了基础的!= null判断,Dart空安全还提供了更简洁的语法处理空值:

  • ?. 空安全访问符:对象不为null时才调用属性/方法,否则返回null,无需写if判断:
    print(student3?.name); // student3为null时输出null,不会报错
    
  • ?? 空合并运算符:对象为null时返回指定的默认值:
    print(student3?.name ?? '未知名称'); // student3为null时输出"未知名称"
    
  • ! 断言运算符:确定对象一定不为null时使用,强制转为非空类型,但如果对象实际为null会抛出异常,需谨慎使用:
    Student student4 = student3!; // 若student3为null,会抛出NullPointerException
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:00:34