1
我正在使用Java的SimpleXML庫。目前,我正試圖使用@Convert註釋反序列化節點。我覆蓋轉換器接口的read()方法,它具有以下原型:使用AnnotationStrategy時自動反序列化子節點
Converter.read(InputNode node)
在read()方法,我迭代子節點和反序列化它們。但是,一些子節點相當複雜,我希望它們使用當前上下文以正常方式反序列化。我認爲它可以使用橫移類完成:
public void read(InputNode node) {
InputNode child;
while ((child = node.getNext()) != null) {
String name = child.getName();
if (name == "child1") {
//manually read object - no problem
MyFirstClass object = new MyFirstClass(child.getValue());
} else if (name == "child2") {
//automatically read object - here is the problem
Traverser traverser = new Traverser(context);
MySecondClass object = traverser.read(child, MySecondClass.class);
}
}
}
有兩個問題與:
橫移類是內部類的SimpleXML,並且在默認情況下,它外面是不可用的。
我在read方法中沒有訪問上下文對象的權限。 InputNode不提供訪問它的方法。
有沒有什麼辦法在沒有複雜的SimpleXML修改的情況下獲取Context對象?改變Traverser類的可見性很容易,但提供上下文不是。
或者,有沒有更簡單的方法來做我所需要的?