飞镖向下投射

问题描述 投票:0回答:1

我需要在 dart 中做一个 downcasting。例如,从 Objectint 是可能的,但我无法用我自己的课程来做到这一点。难道我做错了什么?或者正确的方法是怎么做?

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”类型的子类型

flutter dart downcast
1个回答
0
投票

最好从一开始就创建一个

CoolPerson
。否则,无法施放
person as CoolPerson;
。解决方法是从
CoolPerson
.
 创建一个 
person

Person person = Person('Peter', 30);
CoolPerson coolPerson = CoolPerson(person.name, person.age);
© www.soinside.com 2019 - 2024. All rights reserved.