【发布时间】:2012-07-23 19:51:40
【问题描述】:
我有一个方法需要参数中的通用映射:
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>" 的地图,框架崩溃。
欢迎任何帮助。
【问题讨论】:
-
我不太明白这个问题。有你描述的这种方法。你想调用它。问题是什么?您应该可以使用
Map<String, ?>、Map<String, Foo>或Map<String, ? extends Foo>调用它。问题是编写可编译的东西还是运行的东西? -
不要不要在问题标题中加入“已解决”。如果您有答案,请发布答案并接受。我已经回滚了你的编辑。请提交答案。