飞镖向下转型

2024-03-16

我需要在 dart 中进行向下转换。例如可以从Object to 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}');

}

这段代码的结果是:
Im 42
未捕获的错误:TypeError:“Person”的实例:“Person”类型不是“CoolPerson”类型的子类型


最好只创建一个CoolPerson从头开始。否则无法投出person as CoolPerson;。解决方法是创建一个CoolPerson from person.

Person person = Person('Peter', 30);
CoolPerson coolPerson = CoolPerson(person.name, person.age);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

飞镖向下转型 的相关文章

随机推荐

  • Xcode 4 中的活动构建配置在哪里设置

    我的项目中有 3 个配置 Debug Distribution AdHoc 和 Distribution AppStore 在 Xcode 3 中 我们有一个列表可以在构建和运行之前选择设备 版本 配置和目标 现在 对于 Xcode 4 我
  • 使用正则表达式删除字符之前或之后的空格

    我是正则表达式的新手 我想找到一个很好的解决方案来替换之前或之后的空格 我的子字符串中的 char 我有类似的字符串 Path01 Some folder folder 2 我检查了正则表达式 s s 但这对我来说是不正确的 我必须输入输出
  • 如何在 Tensorflow 2.0 中制作不规则批处理?

    我正在尝试从由一维数值数据张量组成的 Tensorflow 数据集创建数据输入管道 我想创建一批不规则的张量 我不想填充数据 例如 如果我的数据采用以下形式 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 我希望我的数据集由以下
  • JList 的自定义组件而不仅仅是字符串

    我一直在尝试更新我的 Java 知识 并且一直在构建一个小型 GUI 程序 但遇到了一些问题 基本上 我有一个JList我目前正在使用来自我的一个类的对象中的字符串填充该类 该类实现了AbstractListModel我们可以称之为我的It
  • 在 Windows 中将多个文件的前缀重命名或删除为每个文件的编号

    我正在尝试更改当前文件夹中的所有文件名 并且我正在尝试通过删除文件前缀 每个文件都有一个公共前缀 或将其名称更改为其计数 如果有 5 个文件 则文件名将是 1 txt 2 txt 3 txt 4 txt 5 txt 现在我在cmd中找到了r
  • 如何使用jquery一键选中复选框(3)

    这里我有一堆复选框 比如说 如果我单击任何复选框 我也希望选中接下来的两个复选框 即在两个复选框旁边 table border 1 cellspacing 0 width 450 tr td td tr table
  • 无法通过 group_send 向 Django 通道发送消息

    我想使用 Django Channels 通过通道发送消息 我就是这样做的 我首先创建一个消费者 我能够回显收到的消息 但是 无法将消息发送到特定频道 组 class Consumer AsyncJsonWebsocketConsumer
  • 获取Android中虚拟键盘的高度

    如何获取Android中虚拟键盘的高度 是否可以 我尝试从主窗口获取它 但它给了我应用程序的完整高度 但我想得到键盘的高度 您无法获取键盘高度 但可以获取 View 的高度 这是您真正想要的 并且您将获得提供给当前视图的 onLayout
  • PL/SQL 在整个数据库中搜索字符串

    这不仅仅是一个问题 它还是一个信息共享帖子 我今天遇到一个情况我需要在应用程序的整个数据库中寻找一个刺痛 但不知道它属于哪个表 列 下面是我编写并用于帮助我提出建议的 PL SQL 块 希望它能帮助其他有类似需求的人 Declare i N
  • 如何远程访问Spring-boot JMX

    我知道 spring 自动公开 JMX beans 我能够使用 VisualVM 在本地访问它 但是在产品上我如何使用它的 JMX beans 远程连接到应用程序 是否有默认端口或者我应该另外定义什么 谢谢 射线 默认情况下 JMX 可在本
  • -m32 选项不适用于 gcc,但适用于 g++

    我试图在 x86 64 ubuntu 12 04 机器上编译 32 位目标的应用程序 我使用安装了所需的包 sudo apt get install gcc multilib g multilib libc6 i386 libc6 dev
  • 错误:安装 ruby​​-debug-ide

    事实上 我是 ruby on Rails 开发的新手 并不是说我无法在 aptana studio 3 上安装 gem install ruby debug ide gem install ruby debug ide Temporaril
  • 声纳:“关闭这个PreparedStatement”

    Why is 声纳Qube http docs sonarqube org 如果我在finally块中关闭它 Jenkins的插件会抱怨打开的语句 我需要在单独的函数中验证数据库连接 final String PING SELECT 1 f
  • Hamcrest Matchers 包含匹配器列表

    我正在尝试使用org hamcrest Matchers contains java util List gt http hamcrest org JavaHamcrest javadoc 1 3 org hamcrest Matchers
  • 以编程方式将 UILabels 和 UIImageViews 添加到 UIScrollView

    我知道这个问题在这里经常出现 但我似乎仍然无法让它发挥作用 我可能没有正确启动视图或其他 无论如何 我正在尝试以编程方式向 UIScrollView 添加多个标签和图像 这是我的 h 文件的代码 import
  • ggplot2 中缺少功能区

    我似乎在 ggplot2 中设置功能区显示时遇到问题 这是一个组成的数据集 Estimate lt c 100 125 150 175 GlobalDFData lt data frame Estimate Upper Estimate 2
  • JavaScript 大括号参数作为函数参数[重复]

    这个问题在这里已经有答案了 我对 javascript 不太熟悉 并且有一个关于函数参数周围使用大括号的问题 因为它不是 JSON 结构 我正在学习核js 我找到了一些代码作为示例 但我不太明白 为什么 产品 在大括号中 addToCart
  • 串行执行单元测试(而不是并行)

    我正在尝试对我编写的 WCF 主机管理引擎进行单元测试 该引擎基本上根据配置动态创建 ServiceHost 实例 这使我们能够动态地重新配置哪些服务可用 而无需在添加新服务或删除旧服务时关闭所有服务并重新启动它们 然而 由于 Servic
  • GCC Linker:如何在输出部分生成每个文件贡献的报告

    最近我在尝试链接我的程序时遇到了一个问题 它报告 text无法放入指定的内存区域 显然 源代码变得太大而无法在有限的内存区域中链接 我现在要做的是分析哪个文件对 text 部分贡献最大 以便进行后续代码优化 我尝试了很多方法但没有成功 nm
  • 飞镖向下转型

    我需要在 dart 中进行向下转换 例如可以从Object to int 但我无法用我自己的课程来做到这一点 难道我做错了什么 或者正确的方法是怎样做的 class Person final String name final int ag