0

ほとんどのJava-XMLデータバインディングAPIでのオブジェクトマーシャリングについて話すとき、XMLファイルはメモリのユーザー定義クラスから再作成されると言われていますか?私は言うことについてかなり混乱しています(メモリからのユーザー定義クラス)。リフレクションを使用すると、マーシャリングプロセスを実装する必要がある場合にクラス名やフィールドを取得するのに役立つことはわかっていますが、データ(要素または属性の値)にアクセスするにはどうすればよいですか?

このプロセスを少し説明できる人はいますか?

ありがとう

4

3 に答える 3

4

リフレクションを使用してそれらにアクセスできます。Reflectionは、名前だけでなく、たとえばフィールドが保持する値も返します。

簡単な例は、次のコードで取得できます。

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

ご覧のとおり、各フィールドの値にはメソッドを使用してアクセスしますField.get(Object)。詳細については、こちらをご覧ください

于 2012-06-24T16:47:45.603 に答える
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 に答える
0

マーシャリングされたオブジェクトによって参照されるデータもマーシャリング可能である必要があります。

たとえば、 XmlAttribute javadocを参照してください。場合によっては、参照データは単純型(String、float、...)またはマーシャリングコンテキストで認識されているクラスのいずれかである必要があります。

于 2012-06-24T16:56:21.310 に答える