如何针对其父类检查类型?

时间:2016-02-01 18:28:03

标签: generics dart generic-programming

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

我正在创建通用class test<T>

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

基于对象,文档中的Object > num > int,所以起初我认为:如果T is numTint会起作用。测试int is num显示为false。我必须使用另一个关键字而不是is来确定它是否是特定类的子级。

我试图设置它,如果T是num的子节点,它将处理比较的方式与它们是字符串的方式不同。

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

2 个答案:

答案 0 :(得分:1)

使用int is num,您可以测试Type的实例是num的子类型是否正确报告为false

您要测试的内容与5 is num相似。

DartPad

中试用

答案 1 :(得分:0)

如何测试类型及其类型参数。

import 'package:type_helper/type_helper.dart';

void main() {
  var test = Test<int>();
  test.testAgain<String>();
  if (isTypeOf<Test, Test>()) {
    print('<Test> is type of <Test>. Haha. Well it is obvious. :-)');
  }
}

class Test<T> {
  Test() {
    if (isTypeOf<T, int>()) {
      print('<T> is type of <int>. It is very good. :-)');
    }
  }

  void testAgain<T2>() {
    if (isTypeOf<T2, String>()) {
      print('<T2> is type of <String>. It is also good. :-)');
    }
  }
}

结果:

<T> is type of <int>. It is very good. :-) <T2> is type of <String>. It is also good. :-) <Test> is type of <Test>. Haha. Well it is obvious. :-)