如何解决Dart中的运行时类型检查-检查列表
我想检查http
请求的响应是否匹配特定的datatype
(= List<dynamic
)。
case 200:
var responseJson = json.decode(response.body);
print(responseJson['results'].runtimeType); // Output: I/flutter (13862): List<dynamic>
print(responseJson['results'].runtimeType is List<dynamic>); // Output: I/flutter (13862): false
if (responseJson['results'].runtimeType is List<dynamic> &&
responseJson['results'].length > 0) {
return responseJson;
}
throw NotFoundException('Result is empty...');
我很困惑...为什么打印false
? runtimType
的输出显示List<dynamic>
,因此应为true
...
解决方法
您仅应将runtimeType
用于调试目的,因为此属性将在运行时返回对象的实际类型,并且不能用于检查给定类型是否与另一类型兼容。
is
运算符是用于检查类型的正确运算符,但您在针对runtimeType
使用它的情况下返回了Type
对象。相反,您应该只使用它:responseJson['results'] is List<dynamic>
。
这将检查类型是否与List<dynamic>
兼容。您也可以像这样简单一些:responseJson['results'] is List
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。