dart - “x”类型的值不能分配给“T”类型的变量
问题描述
鉴于以下代码,我不明白为什么A value of type 'Foo' can't be assigned to a variable of type 'T'.
会引发错误。
void main () {
Bar bar = Bar();
}
class Foo {
//
}
class Bar<T extends Foo> {
T foo = Foo();
}
解决方案
我不明白为什么
A value of type 'Foo' can't be assigned to a variable of type 'T'.
会抛出错误。
T extends Foo
表示 thatT
可以替代Foo
(的每个实例T
也是 a Foo
),而不是 thatFoo
可以替代T
.
T foo = Foo();
是不安全的,因为Foo()
不一定是T
; T
可能是派生自Foo
. 例如,假设您有:
class Baz extends Foo {
void someBazSpecificMethod() {}
}
现在,如果您使用Baz
as T
,那将等同于Baz foo = Foo();
which 显然应该是非法的。
推荐阅读
- reactjs - 4 状态“进度”栏反应组件
- stripe-payments - 为什么 Stripe.js 在 paymentRequest 和 PaymentIntent 中重复选项
- kubernetes - 访问 Openshift 集群内不同安全组的私有 IP
- uwp - 如何启用通过超链接打开的 UWP 应用(深度链接)
- java - 我想用java写一个ffmpeg
- html - openhtmltopdf,基于html创建pdf/a但两页只有一页有内容
- google-sheets - 根据不同工作表中的条件对行求和的公式是什么?
- java - Android 从 AsyncTask 打开 JavaCameraView
- jquery - Ajax 请求复杂类型在 ApiController 参数中为空
- java - 从 Java 触发存储过程,它将 Compex 对象(如视图或表)作为输入/输出