因此,假设我们有一个Java应用程序,其中包含一个名为的抽象类,SomeAbstractClass
以及至少10个超类的子类.
什么是使用这种抽象超类在泛型中的方式,Collection<? extends SomeAbstractClass>
而不仅仅是使用Collection<SomeAbstractClass>
也许我错过了仿制药中非常基本的东西.
这两种声明的区别:
Collection<? extends A> c1;
Collection<A> c2;
Run Code Online (Sandbox Code Playgroud)
c2 可以保存 A 或任何子类的实例,但 c1 可以保存 A(或 A)的某些未知但特定的子类或任何未知类的子类的实例。
您无法向 c2 添加项目,因为编译器不知道它是什么类型,只有当您取出一个项目时,它才能转换为 A。
此外,您不能将 c1 分配(即强制转换)到 c2 - c1 不是 c2 类型的子类。
归档时间: |
|
查看次数: |
465 次 |
最近记录: |