以下示例失败:
FAIL: MyClass tests getClassReturnsConstructorForDouble
Expected: ?:<double>
Actual: ?:<double>
例子:
test("getClassReturnsConstructorForDouble", () {
double object = 10.1;
Type objectClass = reflect(object).type.reflectedType;
expect(objectClass, equals(object.runtimeType));
});
难道不能准确反射(reflect)int/double类型吗?
最佳答案
reflectedType 为您提供真正的实现类型。 runtimeType 可以按设计说谎,也确实如此。
对于各种类型的数字、字符串和其他内置类型,可以有不同的实现,但它们都是公开的。
例如,对于不同大小的整数,我们可能有不同的实现类型,但它们都会说它们的 runtimeType 是 int。如果您反射(reflection)一下,就会发现其中的区别。
另一个例子可能是字符串。例如,对于纯 ASCII 的字符串可能有专门的类,因为它们可以更紧凑地表示。这不会在基层公开:runtimeType 是 String。除非你通过反射挖掘它,否则你无法检测到它。
关于dart - 反射(reflect)原始类型如 "double"导致意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20245748/