gpt4 book ai didi

generics - 如何根据其父类检查类型?

转载 作者:行者123 更新时间:2023-12-03 02:53:44 26 4
gpt4 key购买 nike

简单的情况,int 确实是一个数字。

我正在创建一个通用的 class test<T>
我想测试 T 以查看它是否继承自 number (或在 Dart 的情况下为 num )。

基于对象,Object > num > int在文档中,所以起初我在想:T is num如果 T 会起作用是 int .测试 int is num显示错误。我必须使用另一个关键字而不是 is以确定它是否是特定类的 child 。

我试图将它设置为如果 T 是 num 的子级,它将处理比较不同于如果它们是字符串。

对我来说,这可以追溯到 is-a 和 has-a 关系的多态继承设计。

最佳答案

1. 答案

int is num您测试是否是 Type 的实例是 num 的子类型正确报告为 false .

您要测试的内容很像 5 is num .

试试看 DartPad .

2. 额外的有用信息

正如评论中所指出的,注意 is 也很有用运行时类型的测试。所以,如果你正在使用一个未初始化的变量——例如,int nonInitializedVar; —,运行时类型为 Null , Dart 将返回 falseis测试,因为 Null不是 num 的子类.

还有一点很重要,如果你想使用is在运行时的类型(类)上,您需要使用反射,以及诸如 dart:mirrors 之类的包。或 reflectable或 dart-analyzer 在构建代码生成时执行此操作。

关于generics - 如何根据其父类检查类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com