0

在谈到大多数 Java-XML 数据绑定 API 中的对象编组时,有人说 XML 文件是从内存中的用户定义类重新创建的?我很困惑说(用户从内存中定义的类)。我知道在需要实现编组过程的情况下,使用反射将有助于获取类名和/或字段,但是如何访问数据(元素或属性的值)?

有没有人可以稍微解释一下这个过程?

谢谢

4

3 回答 3

4

您可以使用反射访问它们。例如,反射不仅返回名称,还返回字段所包含的值。

可以使用以下代码获得一个简单的示例:

import java.lang.reflect.Field;

public class ReflectionTest {

    public static void main(final String[] args) throws Exception {
        Object obj = new Person("Person Name", 20);

        for (Field f : obj.getClass().getDeclaredFields()) {
            f.setAccessible(true);
            System.out.println(f.getName() + " = " + f.get(obj));
        }
    }

    public static class Person {
        private final String name;
        private final int age;

        public Person(final String name, final int age) {
            super();
            this.name = name;
            this.age = age;
        }

    }

}

此代码将打印出:

name = Person Name
age = 20

如您所见,每个字段的值都是使用 method 访问的Field.get(Object)你可以在这里找到更多。

于 2012-06-24T16:47:45.603 回答
0

编组对象引用的数据也必须是可编组的。

例如,请参阅XmlAttribute javadoc:在某些情况下,引用数据必须是简单类型(String、float、...)或编组上下文已知的类。

于 2012-06-24T16:56:21.310 回答
0

字段值也是如此,您可以使用反射轻松读取它们的值:此示例读取MyObject.someField字段值。

Class  aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
于 2012-06-24T16:49:35.833 回答