📜  dart 如何判断一个对象是否是类的实例 - Dart (1)

📅  最后修改于: 2023-12-03 15:30:22.288000             🧑  作者: Mango

Dart 如何判断一个对象是否是类的实例

在 Dart 中,可以通过 is 关键字来判断一个对象是否是指定类的实例。

class Person {
  String name;

  Person(this.name);
}

void main() {
  Person person = Person('John');

  // 判断 person 是否是 Person 类的实例
  bool isPerson = person is Person;
  print(isPerson); // true
}

上面的代码中,使用 is 关键字来判断 person 对象是否是 Person 类的实例,结果为 true

还可以通过 runtimeType 属性获取对象的运行时类型。

void main() {
  Person person = Person('John');

  // 获取 person 对象的运行时类型
  Type type = person.runtimeType;
  print(type); // Person
}

上面的代码中,使用 runtimeType 属性获取 person 对象的运行时类型,并将其输出为字符串 "Person"

在 Dart 中,所有的对象都是 Object 类的子类,所以可以使用 is 关键字来判断一个对象是否是 Object 类的实例。

void main() {
  Object obj = 'Hello, World!';

  // 判断 obj 是否是 Object 类的实例
  bool isObject = obj is Object;
  print(isObject); // true
}

上面的代码中,使用 is 关键字来判断 obj 对象是否是 Object 类的实例,结果为 true

除了使用 is 关键字来判断一个对象是否是类的实例之外,还可以使用 as 关键字来将一个对象转换为指定类的实例。

void main() {
  Object obj = Person('John');

  // 将 obj 强制转换为 Person 类的实例
  Person person = obj as Person;
  print(person.name); // John
}

上面的代码中,使用 as 关键字将 obj 对象强制转换为 Person 类的实例,并将其赋值给 person 变量。注意,只有当 obj 对象实际上是 Person 类的实例时,转换才会成功。如果 obj 对象不是 Person 类的实例,转换将会失败并抛出异常。