【发布时间】:2018-07-11 05:23:19
【问题描述】:
在我的程序中有一些场景,我将从属性文件中获取空对象,如下所示
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.1" class="java.beans.XMLDecoder">
<object class="java.util.Map">
</object>
</java>
在下面的代码中读取空对象
public Object translateObj(
String data,
PropertyDefinition propDef) {
try {
XMLDecoder decoder =
new XMLDecoder(new BufferedInputStream(new ByteArrayInputStream(data.getBytes("UTF-8"))));
Object object = decoder.readObject();
decoder.close();
return object;
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("XmlNativeTranslator.translateFromStorage: " +
" Unable to UTF-8 encode inputData " + data.toString());
} catch (ArrayIndexOutOfBoundsException e) {
StringBuffer s = new StringBuffer();
s.append("Failed to translate property definition key [");
s.append(propDef.getKey());
s.append("] XML contents [");
s.append(data.toString());
s.append("]");
throw new RuntimeException(s.toString(), e);
}
}
在尝试读取上面代码中的空对象时,decoder.readObject() 我面临以下错误
java.lang.RuntimeException: XmlNativeTranslator.translateFromStorage: 无法翻译属性定义键 [FORMS_KEY] XML 内容 [ ] 原因: java.lang.ArrayIndexOutOfBoundsException: 0
需要一种方法来处理这种情况
【问题讨论】:
标签: java arrays java-8 xml-serialization indexoutofboundsexception