在此分配中无效的是:`Map <String,Object> mObj = new HashMap <String,String []>();`? - java

在Java中,此分配有什么问题:

Map<String, Object> mObj = new HashMap<String, String[]>();

我得到:

error: incompatible types: HashMap<String,String[]> cannot be converted to Map<String,Object>

由于String[]Object,所以应该可以。
如果我将这样的非参数化Map转换为:Map<String, Object> mObj = (Map) new HashMap<String, String[]>();,它可以工作,但是,当然,我会得到警告并且它很脏。

而且,我觉得我的第一个任务应该可以工作。

谢谢 !

PS:我不能简单地将new HashMap<String, String[]>();更改为new HashMap<String, Object>();,因为实际上,我调用了一个返回Map<String, String[]>();的方法,当然,我不能更改此方法。再次感谢你。

参考方案

该错误是因为泛型不支持子类型化。 Number a = new Integer(5)是有效的情况。但是一旦放置了泛型,它就会产生编译错误,不允许ArrayList<Number> a = new ArrayList<Integer>()。查看此链接是否有助于https://dzone.com/articles/5-things-you-should-know-about-java-generics了解有关泛型的一些准则。

Java中的<<或>>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…

HashMap <>错误。类型非法开始 - java

每当我尝试编译此函数时,都会在第10行给出错误->错误消息:CandidateCode.java.10:静态HashMap类型的非法启动hm = new HashMap (); 1个错误我正在尝试在网站的编译器上对其进行编译,但是当我使用netbeans时,它可以正常工作。import java.util.*; public class Candida…

菱形运算符<>是否等于<?> - java

我在util.TreeSet类中发现,其中一个构造函数正在使用具有空泛型类型的新TreeMap调用另一个构造函数。 public TreeSet(Comparator<? super E> comparator) { this(new TreeMap<>(comparator)); } new TreeMap<>是什么意思…

Java:我可以在Hashmaps中使用数组吗? - java

我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();

休眠映射<键,设置<值>> - java

我有以下表格:@Entity @Table(name = "events") Event --id --name @Entity @Table(name = "state") State --id --name @Entity @Table(name = "action") Action --id …