dart - 反射(reflect)原始类型如 "double"导致意外输出

标签 dart

以下示例失败:

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/

相关文章:

flutter - Listview构建器未更新列表中的值

dart - 我们可以使用 Flutter 或 Dart 制作 Web 应用程序或网站吗

dart - Flutter-未定义命名参数

flutter - Flutter,如何在没有Twilio SDK的情况下使用Twilio发送消息

firebase - 方法 'sendEmailVerification' 没有为类型 'UserCredential' 定义。 Firebase flutter

flutter - 即使我使用Flutter Row,我想要的字符串也不会移到一边

flutter - 满足条件后,Streambuilder的Flutter Snapshot没有数据

dart - 我如何使用 Angular 2 Dart 在页面重新加载时支持 RouteParams?

dart - Flutter - 在 BottomNavigationBar 中显示一个 PopupMenuButton

dart - 如何在 Dart 中将 double 舍入到小数点后给定的精度?