我需要在 dart 中做一个 downcasting。例如,从 Object 到 int 是可能的,但我无法用我自己的课程来做到这一点。难道我做错了什么?或者正确的方法是怎么做?
class Person {
final String name;
final int age;
Person(this.name, this.age);
}
class CoolPerson extends Person {
CoolPerson(String name, int age): super(name, age);
int someFunction() {
return name.length * age;
}
}
main() {
Object x = 42;
int i = x as int;
print('Im $i');
Person person = Person('Peter', 30);
CoolPerson coolPerson = person as CoolPerson;
print('Im ${coolPerson.name}');
}
这段代码的结果是:
我 42
未捕获的错误:类型错误:“人”的实例:“人”类型不是“CoolPerson”类型的子类型
最好从一开始就创建一个
CoolPerson
。否则,无法施放person as CoolPerson;
。解决方法是从 CoolPerson
.创建一个
person
Person person = Person('Peter', 30);
CoolPerson coolPerson = CoolPerson(person.name, person.age);