2012-06-24 83 views
0

當談到大多數Java-XML數據綁定API中的對象編組時,有人說XML文件是從內存中用戶定義的類重新創建的嗎?我很困惑地說(用戶定義的內存類)。我知道在需要實現編組過程時,使用反射將有助於獲取類名和/或字段,但是如何訪問數據(元素或屬性的值)?java對象編組

有沒有人可以解釋一下這個過程?

謝謝

+0

您還可以使用反射來訪問類字段值: – GETah

+0

使用JAXB,我相信您的類字段需要符合Java Bean約定,以便反射可以正常工作。 –

回答

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 

正如你可以使用方法Field.get(Object)訪問看到每個字段的值。你可以找到更多的here

0

同樣適用於字段值,您可以使用反射輕鬆讀取它們的值: 此示例顯示MyObject.someField字段值。

Class aClass = MyObject.class 
Field field = aClass.getField("someField"); 
MyObject objectInstance = new MyObject(); 
Object value = field.get(objectInstance); 
0

編組對象引用的數據也必須是可編組的。例如:在某些情況下,引用數據必須是簡單類型(String,float,...)或編組上下文已知的類。