我如何根据其父 class 检查类型?
How do i check a type against its parent class?
简单的情况下,int 确实是一个数字。
我正在创建一个通用的 class test<T>
我想测试 T 看它是否继承自 number(或 Dart 中的 num)。
基于文档中的对象,Object > num > int
,所以一开始我在想:如果 T
是 int
,T is num
会起作用。测试 int is num
显示错误。我必须使用另一个关键字而不是 is
来确定它是否是特定 class.
的子项
我正在尝试将其设置为如果 T 是 num 的子元素,它将以不同于处理字符串的方式处理比较。
对我来说,这可以追溯到 is-a 和 has-a 关系的多态继承设计。
1。答案
使用 int is num
测试 Type
的实例是否是 num
的子类型,它被正确报告为 false
。
你想测试的是 5 is num
.
在 DartPad 试试。
2。额外的有用信息
如评论中所述,注意 is
测试运行时类型也很有用。所以,如果你正在使用一个未初始化的变量——例如,int nonInitializedVar;
——运行时类型为 Null
,Dart 将 return false
到 is
测试,因为 Null
不是 num
.
的子类
另一个重点是,如果你想在运行时对类型(类)使用is
,你将需要使用反射,例如dart:mirrors
或reflectable
或 dart-analyzer 在代码生成的构建时执行此操作。
简单的情况下,int 确实是一个数字。
我正在创建一个通用的 class test<T>
我想测试 T 看它是否继承自 number(或 Dart 中的 num)。
基于文档中的对象,Object > num > int
,所以一开始我在想:如果 T
是 int
,T is num
会起作用。测试 int is num
显示错误。我必须使用另一个关键字而不是 is
来确定它是否是特定 class.
我正在尝试将其设置为如果 T 是 num 的子元素,它将以不同于处理字符串的方式处理比较。
对我来说,这可以追溯到 is-a 和 has-a 关系的多态继承设计。
1。答案
使用 int is num
测试 Type
的实例是否是 num
的子类型,它被正确报告为 false
。
你想测试的是 5 is num
.
在 DartPad 试试。
2。额外的有用信息
如评论中所述,注意 is
测试运行时类型也很有用。所以,如果你正在使用一个未初始化的变量——例如,int nonInitializedVar;
——运行时类型为 Null
,Dart 将 return false
到 is
测试,因为 Null
不是 num
.
另一个重点是,如果你想在运行时对类型(类)使用is
,你将需要使用反射,例如dart:mirrors
或reflectable
或 dart-analyzer 在代码生成的构建时执行此操作。