Dart仿制药未按照文件进行具体化
我试图传递一个类型以利用类型信息,但那个类型似乎并没有传递 我回到文档,再次检查Dart泛型是否已具体化,根据文档,它们是: 我在一个响应上调用Hyde,该响应变形了响应对象的内容:Dart仿制药未按照文件进行具体化,dart,Dart,我试图传递一个类型以利用类型信息,但那个类型似乎并没有传递 我回到文档,再次检查Dart泛型是否已具体化,根据文档,它们是: 我在一个响应上调用Hyde,该响应变形了响应对象的内容: response.hydrate<BoqVO>(); 。。。但事实并非如此 替换response.hydrome()带有response.hydrate(新的BoqVO())并将方法签名更改为 void hydrate(T t) { 如果我现在使用小写的t,那么它是可以工作的,但是不必为了使具体化
response.hydrate<BoqVO>();
。。。但事实并非如此
替换response.hydrome()代码>带有response.hydrate(新的BoqVO())
并将方法签名更改为
void hydrate(T t) {
如果我现在使用小写的t
,那么它是可以工作的,但是不必为了使具体化的泛型可用而实例化对象
你知道Dart为什么这样做,或者我缺少什么使具体化的泛型正确工作吗
PS:我不是在Dart2
上,但目前在Dart1.24.3
上,通用集合从一开始就得到了支持,它们得到了一些类型支持,但是通用方法只是在Dart 1上进行了实验,具体的类型参数只在Dart 2的预发行版中添加。正如Günther Zöchbauer所说,类型参数在Dart 1.24中不起作用
下面解释了如果在Dart 2.0中尝试相同的代码会发生什么情况,因为Dart 2.0不正确地使用了类型参数,因此也无法工作
代码T.runtimeType
将T
视为一个表达式。当一个类型(包括一个类型参数)用作表达式时,它将计算为类type
的一个实例。打印的是类型
对象的运行时类型(其中\u type
是类型
的内部平台实现)。
要打印真正的类型,只需打印(T)
(它仍然将T
转换为type
对象,但它表示类型BoqVO
,并带有包含BoqVO
名称的toString
)
同样,对于
T是BoqVO
,您将T
评估为Type
对象,并且由于Type
未实现BoqVO
,因此该测试始终为假。没有简单的方法来测试类型参数的类型是否实现了特定的其他类型,但是您可以绕过它,因为[]是List
您在上面插入的文档部分也是来自Dart 1.x?在Dart 1中,类型大多在运行时被忽略。如果我在Dart 1.24
和Dart 2
之间更改下拉列表,我会看到完全相同的部分,这两个部分都说泛型是可信赖的,我相信你,但是如果你参考特定文档,插入指向它们的链接会很有帮助。你的代码不是关于集合,这是关于泛型方法类型参数的,它们在Dart 1中肯定没有具体化。
void hydrate(T t) {