📅  最后修改于: 2023-12-03 14:58:16.680000             🧑  作者: Mango
飞镖提示:以'键入_InternalLinkedHashMap<DateTime, int>'不是类型'Map<DateTime, double>'的子类型。
这是一种类型错误,意味着程序员在尝试将一个类型为InternalLinkedHashMap<DateTime, int>
的对象分配给一个类型为Map<DateTime, double>
的变量时,遇到了问题。
InternalLinkedHashMap<DateTime, int>
和Map<DateTime, double>
都是映射类型,但它们并不是完全相同的类型。因为它们的值类型不同,前者的值类型是整型,而后者的值类型是双浮点数。
也就是说,通过简单的类型检查可以发现,这两个类型并不兼容。 因此,当您尝试将一个InternalLinkedHashMap<DateTime, int>
类型的对象分配给Map<DateTime, double>
类型的变量时,会收到飞镖类型错误的提示。
要解决这个问题,您需要将InternalLinkedHashMap<DateTime, int>
类型的对象与Map<DateTime, double>
类型的变量彼此匹配。如果您确定值类型可以安全转换,则可以将值类型从整型显式转换为浮点数类型。
例如,如果您有一个InternalLinkedHashMap<DateTime, int>
类型的对象,但需要一个Map<DateTime, double>
类型的变量,您可以这样做:
InternalLinkedHashMap<DateTime, int> myMapInt = InternalLinkedHashMap<DateTime, int>();
Map<DateTime, double> myMapDouble = myMapInt.map((key, value) {
return MapEntry(key, value.toDouble());
});
这将首先创建了一个新的Map<DateTime, double>
类型的变量myMapDouble
,然后通过使用map()
方法和MapEntry
对象将原始InternalLinkedHashMap<DateTime, int>
类型的映射值转换为浮点数类型,最终填充到新的Map<DateTime, double>
类型变量myMapDouble
。
类型错误是编程中常见的错误。当您收到飞镖以'键入_InternalLinkedHashMap<DateTime, int>'不是类型'Map<DateTime, double>'的子类型
错误时,需要验证您的代码是否在正确地处理两个类型的值。如果类型不兼容,请使用合适的类型转换方式来解决这个问题。