2

我有一个方法需要参数中的通用映射:

public void someMethod(Map<String,?> mapParameter){
    ...
}

我调用此方法的实现对“?”有多个可能的值。通用参数。例如,有时“?”中的值 将是整数,其他将是字符串,布尔值。

是否存在某种方式来声明一个可以接受我的值并传递给“someMethod”方法的完全通用的 HashMap?

我试图将值提取到类“IntegerValueDTO”,接收字符串值中的值并转换为特定类型。创建的所有这些“valueDTO”类,我都从“defaultValue”扩展。有了这个,我实现了这张地图:

Map<String, ? extends DefaultValue> map = new HashMap<String, ? extends DefaultValue>();

但是,方法 someMethod 不是来自我的应用程序,它来自一个框架,那么我没有控制机会来实现。并以这种方式声明我的地图,他将生成 的地图"Map<String, some instance of DefaultValue>",框架崩溃。

欢迎任何帮助。

4

2 回答 2

4
Map<String, ? extends Object> map = new HashMap<String, ? extends Object>();

如果该方法返回一些您希望在应用程序中使用的值,您可以使用反射来查看它返回的值并强制转换为该特定对象。

于 2012-07-23T20:17:10.347 回答
0

如果没有像 Def​​aultValue 这样的 Wrapper 类,您将无法做到这一点。

原因是 Integer、Character、Long 等的 Wrapper 类不扩展 Object。

于 2012-07-23T20:13:51.723 回答