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

Fal*_*per 6 generics generic-programming dart

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

我正在创建一个泛型 class test<T>

我想测试 T 以查看它是否继承自 number (或在 Dart 的情况下为 num )。

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

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

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

Gün*_*uer 5

1. 答案

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

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

DartPad 中尝试一下。

2. 额外的有用信息

正如评论中所指出的,注意is运行时类型的测试也很有用。所以,如果你有一个未初始化变量工作-例如,int nonInitializedVar;-与运行时类型Null,飞镖会返回falseis测试,因为Null不是一个子类num

另一个重要的一点是,如果您想is在运行时使用类型(类),您将需要使用反射,使用诸如dart:mirrorsreflectable或 dart-analyzer 之类的包在代码生成的构建时执行它。