Java 多态性:将子类指定给超类

Java 多态性:将子类指定给超类,java,generics,map,polymorphism,Java,Generics,Map,Polymorphism,两者都一样吗 ParentClass object=new ChildClass(); ParentClass object = (ParentClass) new ChildClass(); 如果我想创建一个映射字符串到子对象的映射,比如 "dog"->childA; "cat"->childB 我该如何申报地图 Map<String,Parent> or Mpa<String,T extends Parent> Map 或 兆帕 我不确定第二个是

两者都一样吗

ParentClass object=new ChildClass();

ParentClass object = (ParentClass) new ChildClass();
如果我想创建一个映射字符串到子对象的映射,比如

"dog"->childA;
"cat"->childB
我该如何申报地图

Map<String,Parent>
or
Mpa<String,T extends Parent>
Map
或
兆帕

我不确定第二个是否正确,但我在某处读到了它,前两个实际上是相同的。铸造是不必要的

如果希望映射包含混合的子类,则需要声明

Map<String,Parent>
生成编译器错误。你所能做的就是:

Map<String,? extends Parent> = new HashMap<String, Parent>();
Map=newhashmap();
在这种情况下,你最好还是坚持下去

Map<String,Parent> = new HashMap<String, Parent>();
Map=newhashmap();

前两个在效果上是相同的。铸造是不必要的

如果希望映射包含混合的子类,则需要声明

Map<String,Parent>
生成编译器错误。你所能做的就是:

Map<String,? extends Parent> = new HashMap<String, Parent>();
Map=newhashmap();
在这种情况下,你最好还是坚持下去

Map<String,Parent> = new HashMap<String, Parent>();
Map=newhashmap();
两者都一样吗

ParentClass object=new ChildClass();

ParentClass object = (ParentClass) new ChildClass();
第二次作业中不需要施法。第一个是有效赋值。可以将子类对象指定给超类引用

我该如何申报地图

Map<String,Parent>
or
Mpa<String,T extends Parent>
你应该先申报。
Map
将能够保存父类或其任何子类的实例

关于你的第二次申报:

Map<String, T extends Parent>  // This won't compile
Map//这不会编译
在声明映射时,这不是在类型参数中指定绑定的正确方法。这里不能使用有界类型参数。您应该使用通配符绑定,或者只使用类型参数-
Map
,在声明该类型的位置(可能在声明映射的泛型类中)声明
T
的边界。因此,您可以使用

两者都一样吗

ParentClass object=new ChildClass();

ParentClass object = (ParentClass) new ChildClass();
第二次作业中不需要施法。第一个是有效赋值。可以将子类对象指定给超类引用

我该如何申报地图

Map<String,Parent>
or
Mpa<String,T extends Parent>
你应该先申报。
Map
将能够保存父类或其任何子类的实例

关于你的第二次申报:

Map<String, T extends Parent>  // This won't compile
Map//这不会编译

在声明映射时,这不是在类型参数中指定绑定的正确方法。这里不能使用有界类型参数。您应该使用通配符绑定,或者只使用类型参数-
Map
,在声明该类型的位置(可能在声明映射的泛型类中)声明
T
的边界。因此,您可以使用
强制转换和非强制转换实际上是相同的


对于泛型,如果您用
声明它,您将获胜;无法将内容添加到列表中,因为如果声明为
则无法添加父项。如果
NewChild
是由另一个开发人员创建的,那么我们可以;我不知道是否使用了
Parent
Child
NewChild
,并且不允许写入。

强制转换和非强制转换实际上是相同的

对于泛型,如果您用
声明它,您将获胜;无法将内容添加到列表中,因为如果声明为
则无法添加父项。如果
NewChild
是由另一个开发人员创建的,那么我们可以;我不知道是否使用了
Parent
Child
NewChild
,并且不允许写入