gpt4 book ai didi

java - 多态性:将子类分配给父类(super class)

转载 作者:行者123 更新时间:2023-12-01 08:09:31 27 4
gpt4 key购买 nike

两者一样吗?

ParentClass object=new ChildClass();

ParentClass object = (ParentClass) new ChildClass();

如果我想创建一个将字符串映射到子对象的映射,例如

"dog"->childA;
"cat"->childB

我应该如何声明 map ?

Map<String,Parent>
or
Mpa<String,T extends Parent>

我不确定第二个是否正确,但我在某处读过

最佳答案

Are the both same?

第二次作业中不需要选角。第一个是有效的分配。您可以将子类对象分配给父类(super class)引用。

How should I declare the Map?

你应该用第一种方式声明它。一个Map<String, Parent>将能够保存 Parent 或其任何子类的实例。

至于你的第二个声明:

Map<String, T extends Parent>  // This won't compile

这不是声明映射时在类型参数中指定绑定(bind)的正确方法。您不能在那里使用有界类型参数。您应该使用通配符绑定(bind),或者仅使用类型参数 - Map<String, T> ,边界为 T在声明该类型的位置(可能在声明映射的泛型类中)被声明。所以,你可以使用<? extends Parent> 。以这种方式声明 map 的问题是,您将无法向其中添加任何内容,接受 null .

相关帖子:

引用:

关于java - 多态性:将子类分配给父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18556864/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com