Fal*_*per 6 generics generic-programming dart
简单的情况,int 确实是一个数字。
我正在创建一个泛型 class test<T>
我想测试 T 以查看它是否继承自 number (或在 Dart 的情况下为 num )。
基于Object > num > int
文档中的对象, 所以起初我想: T is num
如果T
是int
. 测试int is num
显示错误。我必须使用另一个关键字而不是is
确定它是否是特定类的子类。
我试图将它设置为如果 T 是 num 的子级,它将处理比较不同于如果它们是字符串。
对我来说,这可以追溯到is-a和has-a关系的多态继承设计。
通过int is num
您测试 的实例Type
是否num
是正确报告为的子类型false
。
您要测试的内容很像5 is num
.
在DartPad 中尝试一下。
正如评论中所指出的,注意is
运行时类型的测试也很有用。所以,如果你有一个未初始化变量工作-例如,int nonInitializedVar;
-与运行时类型Null
,飞镖会返回false
到is
测试,因为Null
不是一个子类num
。
另一个重要的一点是,如果您想is
在运行时使用类型(类),您将需要使用反射,使用诸如dart:mirrors
或reflectable
或 dart-analyzer 之类的包在代码生成的构建时执行它。
归档时间: |
|
查看次数: |
1733 次 |
最近记录: |