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
,并且不允许写入