XMLEncoderはオブジェクトのコンストラクタにプロパティが設定されていることを知っているため、出力しません。 、オブジェクトをインスタンス化し、メイン今XMLEncoder writeObjectはコンストラクタで初期化されたプロパティをスキップします
public class Simple {
int m;
int n;
public int getM() { return m;}
public void setM(int m) {this.m = m;}
public int getN() {return n;}
public void setN(int n) {this.n = n; }
public String toString() {
return "m=" + m + ",n=" + n;
}
public Simple() {
this.m = 1;
this.n = 2;
}
}
、: まずゲッターとセッターとデフォルトコンストラクタで単純なオブジェクトを定義します。
はここで、これは実証(Javaの1.8上で実行)簡単な例でありますプロパティの1つでセッターを使用し、最終オブジェクトでXMLEncoderを呼び出します。私はまた、エンコーダを起動する前に、オブジェクトのプロパティを印刷してくださいするには: M = 1、N = 7 しかし、私は、生成されたファイルを見て、:
public class Main {
public static void main(String[] args) {
Simple simple = new Simple();
simple.setN(7);
System.out.println(simple.toString());
XMLEncoder encoder=null;
try{
encoder=new XMLEncoder(new BufferedOutputStream(
new FileOutputStream("simple.xml")));
}catch(FileNotFoundException fileNotFound){
System.out.println("ERROR: While Creating the File ");
}
encoder.writeObject(simple);
encoder.close();
}
}
は、プログラムを実行すると、私が期待される出力を得ます私が取得:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_112" class="java.beans.XMLDecoder">
<object class="simple.Simple">
<void property="n">
<int>7</int>
</void>
</object>
</java>
は、ここでは、オブジェクトの前のプリントアウトは、両方のプロパティは、その値が設定されていることを示しているのに対し、唯一のプロパティは、出力は、XMLEncoderであることがわかります。 XMLEncoderにはクリスタルボールがあり、過去に何が起こったかを知っているかのようです!
その選択性を説明し、それは両方のnとmの出力を持つことができますが、それは唯一の財産 –