嗯......我实际上正在实现一个类,使用名为“Adapter”的类将任何对象转换为另一个对象。我正在映射每对类型SOURCE - > TARGET使用HashMap:HashMap,HashMap<类< ? >,适配器>取代。每种类型都有适配器。例如:String可以转换为Integer,Double等。要获得适配器:
Adapter adapter = map.get(String.class).get(Integer.class);
我将以dinamically的方式获得适配器:
Adapter adapter = map.get(< source_object >.getClass()).get(Integer.class);
我的问题是我需要在HashMap中输入java.util.Collections $ UnmodifiableMap的关键字。来自Servlets的Request参数集合是一个映射。但是,当我使用.getClass()时,返回java.util.Collections $ UnmodifiableMap。是不可能在适配器HashMap上放置一个关键的java.util.Collections $ UnmodifiableMap.class :(
有人可以帮帮我吗?答案 0 :(得分:1)
将UnmodifiableMap包装在HashMap中会有帮助吗?
source_object = new HashMap<Object, Object>(source_object);
效率低而且不是很优雅,但可能是临时的解决方法?
答案 1 :(得分:1)
感谢tmmllr的帮助!我基于他的建议和改进解决方案!我使用以下命令将索引放在HashMap适配器上:java.util.Collections.unmodifiableMap(new HashMap&lt;&gt;())。getClass()。更有效的方式:
adapters.put(java.util.Collections.unmodifiableMap(new HashMap< >()).getClass(),...);
因此我可以传递java.util.Collections $ UnmodifiableMap实例并获得正确的适配器!这工作\ 0 /
万分感谢转向找到第二个解决方案:
Class.forName("java.util.Collections$UnmodifiableMap");
我认为这是最常用的做法!