以下示例失败并显示:
FAIL: MyClass tests getClassReturnsConstructorForDouble
Expected: ?:<double>
Actual: ?:<double>
Example:
test("getClassReturnsConstructorForDouble", () {
double object = 10.1;
Type objectClass = reflect(object).type.reflectedType;
expect(objectClass, equals(object.runtimeType));
});
难道不能准确反映int/double类型吗?
ReflectedType 为您提供真正的实现类型。 RuntimeType 可以撒谎,并且确实是有意设计的。
对于各种类型的数字、字符串和其他内置类型,可以有不同的实现,但它们是公开的。
例如,对于不同大小的整数,我们可能有不同的实现类型,但它们都会说它们的runtimeType是int。如果你反思一下它们,你就会发现其中的差异。
另一个例子可能是字符串。例如,可能有针对纯 ASCII 字符串的专门类,因为它们可以更紧凑地表示。这不会在基础级别公开:runtimeType 是 String。除非您通过反射挖掘它,否则您无法检测到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)