[英]java.util.Collections$UnmodifiableMap problem : code included
[英]How to index class type of a java.util.Collections$UnmodifiableMap?
嗯......我实际上正在实现一个类,使用一个名为“Adapter”的类将任何对象转换为另一个对象。 我正在使用HashMap映射每对类型SOURCE - > TARGET:HashMap,HashMap <Class <? >,适配器>>。 每种类型都有适配器。 例如: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 :(
有人可以帮帮我吗?
将UnmodifiableMap包装在HashMap中会有帮助吗?
source_object = new HashMap<Object, Object>(source_object);
相当低效,不是很优雅,但也许是一个临时的解决方法?
感谢tmmllr的帮助! 我基于他的建议和改进解决方案! 我使用以下命令将索引放在HashMap适配器上:java.util.Collections.unmodifiableMap(new HashMap <>())。getClass()。 更有效的方式:
adapters.put(java.util.Collections.unmodifiableMap(new HashMap< >()).getClass(),...);
因此,我可以传递java.util.Collections $ UnmodifiableMap实例并获得正确的适配器! 这工作\\ 0 /
百万归功于找到第二个解决方案:
Class.forName("java.util.Collections$UnmodifiableMap");
我认为这是最实践的方式!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.