为什么在扩展对象时类型参数中定义的类型与main函数中引用的类型不同?

时间:2013-12-17 10:07:08

标签: dart

很难用文字解释但是我有以下代码:

void main() {
  Test2 test2 = new Test2();

  // This one is different?
  printHashcode(test2.type);

  // Following 2 are the same
  printHashcode(Test2);

  printHashcode(Test2);

}
void printHashcode(Type t) {
  print("$t hashcode: ${t.hashCode}");
}

class Test<T> {
  Type type = T;
}


class Test2 extends Test<Test2> {
  Test2 () {

  }
}

示例输出:

  

Test2哈希码:629420109

     

Test2哈希码:229136709

     

Test2哈希码:229136709

我期望的输出是主函数中的3个打印是相同的,但第一个是不同的。这是一个错误还是预期的功能?

如果它是一个预期的功能,有没有办法获得与Test2类定义相同的Type对象?

谢谢,

1 个答案:

答案 0 :(得分:1)

我刚试过你的代码,我得到了所有三个打印语句的相同输出

Test2 hashcode: 683363706
Test2 hashcode: 683363706
Test2 hashcode: 683363706

刚刚更新到最新的开发版本(原始频道)

Dart VM version: 1.1.0-dev.4.0 (Fri Dec 13 03:22:00 2013) on "linux_x64"