【发布时间】:2015-07-22 07:16:29
【问题描述】:
我想遍历一个 HashMap。
public void setMyHashMap(final String key,
final HashMap<Integer, MyClass> value) throws NullPointerException{
settings.put(key, value);
}
public HashMap<Integer, MyClass> getMyHashMap(String key) {
return (HashMap<Integer, MyClass>) settings.get(key);
}
------------------------------------------------------------
for (Map.Entry<Integer, MyClass> e : settings.getMyHashMap(key)
.entrySet()) {
System.out.println(e.getValue());
}
这会显示对 MyClass 对象的引用,例如“MyClass@9d5f8e”
for (Map.Entry<Integer, MyClass> e : settings.getMyHashMap()
.entrySet()) {
System.out.println(e.getValue().getLabel());
}
但只要我想访问这个对象的数据,它就会被强制转换为 MyClass,这应该没问题,但不是。当我得到这个异常时,似乎该对象实际上是一个字符串:
java.lang.ClassCastException:java.lang.String 无法转换为 MyClass
我不明白。 我多次传递 HashMap 并且 SettingsClass 将存储的对象转换为 HashMap 没有问题。如果我打印该值,我将获得对 MyClass 的引用,但只要我想访问其中的数据,JRE 就会认为它是一个 String 对象。
【问题讨论】:
-
System.out.println(e.getValue().getClass());? -
显示更多关于你的代码
-
请张贴
putHashMap中的值所在的部分 -
jira 的设置库好像只支持 Lists 和 Maps 中的字符串...你怎么会知道,我觉得很蠢。
-
什么是“设置”?如果这是 JIRA 本身或 SAL 中的 bean,您尝试使用它来持久化对象,请记住,插件的生命周期(以及因此类的生命周期)独立于 JIRA 使用的任何存储。例如,您可以存储一个对象,然后卸载您的插件。 MyClass 失败,但 obj 仍被存储。这样做的结果是,对于您要求 JIRA 本身坚持的任何事情,您通常只能使用 JRE 类和 JIRA-native 类。 (如果您需要存储自己的对象,请先将它们序列化为 XML。)
标签: java loops hashmap jira-plugin