繁体   English   中英

如何索引java.util.Collections $ UnmodifiableMap的类类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM