有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

要映射的java强制转换对象<?,?>没有未经检查的铸造警告

我正在做一个需要传递对象的项目,我想做的是,像这样将对象转换回地图

Object o = new Map<String, String>();
Map<String,String> map = (Map<String,String>)o;

这似乎和预期的一样有效,但我得到了一个

Type safety: Unchecked cast from Object to Map

我知道我可以使用@SuppressWarnings("unchecked"),但我更愿意以一种没有警告的方式来做。如何做到这一点


共 (2) 个答案

  1. # 1 楼答案

    因为Map扩展了Object,所以可以使用Map引用,而不是向下转换到Object

    因此,在代码中,只需替换

    Object o = new Map<String, String>();
    

    Map<String, String> o = new Map<>();
    

    然后你的第二行(未经检查的演员阵容)就变得不必要了

  2. # 2 楼答案

    您可以检查o是否是带有o instanceof MapMap。但是您不能检查泛型参数<String,String>,因为它们在运行时会被删除。因此,即使使用instanceof检查,您也会收到警告