use*_*993 0 java generics polymorphism map
两者都一样吗?
ParentClass object=new ChildClass();
ParentClass object = (ParentClass) new ChildClass();
Run Code Online (Sandbox Code Playgroud)
如果我想创建一个将字符串映射到Children Objects的地图
"dog"->childA;
"cat"->childB
Run Code Online (Sandbox Code Playgroud)
我该如何申报地图?
Map<String,Parent>
or
Mpa<String,T extends Parent>
Run Code Online (Sandbox Code Playgroud)
我不确定第二个是否正确,但我在某处读到了
两者都一样吗?
在第二次分配中不需要强制转换.第一个是有效的任务.您可以将子类对象分配给超类引用.
我该如何申报地图?
你应该以第一种方式宣布它.A Map<String, Parent>将能够保存Parent或其任何子类的实例.
至于你的第二个声明:
Map<String, T extends Parent> // This won't compile
Run Code Online (Sandbox Code Playgroud)
这不是在声明map时指定类型参数中的bound的正确方法.你不能在那里使用有界类型参数.您应该使用通配符绑定,或者仅使用类型参数 - Map<String, T>,T在声明该类型的地方声明边界(可能在声明地图的泛型类中).所以,你可以使用<? extends Parent>.以这种方式声明地图的问题是,你将无法在其中添加任何内容,接受null.
相关文章:
参考:
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |