2016-09-24 42 views
0

有時它會在沒有註解的情況下進行序列化,而其他時間則沒有註釋?有人請賜教關於註釋的必要性。註釋必須通過JaxB來拋棄Java對象嗎?

@XmlRootElement 
public class Test { 


    public void setAge(int age) { 
     this.age = age; 
    } 

    private int age; 
    private String name; 
    private Cat cat; 

    public Test() 
    { 

    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 


    public Cat getCat() { 
     return cat; 
    } 

    public void setCat(Cat cat) { 
     this.cat = cat; 
    } 
} 


class Cat 
{ 
    private String name="catttttttttttttttt"; 

public Cat() 
{ 

} 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

在上面的代碼,它工作正常,但有時如果不加getCat()以上@XmlElement,它不序列化。

+0

不,它不是。但你如何序列化?顯示代碼。 – ulab

+0

Thanks.I瞭解到它不需要每次都使用annoataions。請看我的新評論。 –

回答

0

我通過一些網站一派,在這裏得到了最好的解釋:

http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html

它不需要把註釋和它@XmlAccessorType完全依賴。 Thanq

public class MainClass { 
    public static void main(String[] args) throws Exception { 


     JAXBContext contextObj = JAXBContext.newInstance(Test.class); 

     Marshaller marshallerObj = contextObj.createMarshaller(); 
     marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

     Test test = new Test();test.setAge(25);test.setName("Sriharsha");test.setCat(new Cat()); 

     marshallerObj.marshal(test, new FileOutputStream("/home/pankaj/Downloads/Emp.xml")); 
     System.out.println(); 



    } 
}