2012-02-17 8 views
1

"INI"ファイルが存在し、動作するクラスがいくつかあります。私はシリアライズする新しいクラスを書きましたが、XMLファイルにはデータフィールドがありません。これは単なるシェルです。私は何を間違えたのですか?私はEclipseとUbuntu 11.10を使用しています。 クラス:シリアル化されたクラスのXMLファイルにフィールドデータがありません

public final class ProsilicaCamInit extends SerialXMLIO { 
public boolean isMaster; 
public boolean isSlave; 
public int filter; 
public int exposureTime; 

public ProsilicaCamInit() { 
} 
public void setDefaultValues() { 
    isMaster = false; 
    isSlave = false; 
    filter = 0; 
    exposureTime = 5000; 
} 


public boolean getIsMaster() { 
    return isMaster; 
} 

public void setIsMaster(boolean isMaster) { 
    this.isMaster = isMaster; 
} 

public boolean getIsSlave() { 
    return isSlave; 
} 

public void setIsSlave(boolean isSlave) { 
    this.isSlave = isSlave; 
} 

public int getFilter() { 
    return filter; 
} 

public void setFilter(int filter) { 
    this.filter = filter; 
} 

public int getExposureTime() { 
    return exposureTime; 
} 

public void setExposureTime(int exposureTime) { 
    this.exposureTime = exposureTime; 
} 

} 

私はここに

ProsilicaCamInit pci = new ProsilicaCamInit(); 
pci.setDefaultValues(); 
pci.serialize(pathName); 

使われています私は、デフォルト値が設定されていることを確認するためにチェックしていると、ここで一つだけのフィールドを持つXMLファイルです。

<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.6.0_23" class="java.beans.XMLDecoder"> 
<object class="fireScience.airborne.io.ProsilicaCamInit"> 
    <void property="exposureTime"> 
    <int>5000</int> 
    </void> 
</object> 
</java> 
+0

SerialXMLIOでserialize()メソッドを見ることはできますか? – cutchin

答えて

1

falseはデフォルト値のbooleanであり、ゼロはintのデフォルトであるため、他の値を格納する必要はありません。

+0

ええ、それは良いキャッチです。 XMLEncoderのドキュメントより: _Structurally compact_:XMLEncoderクラスは内部で_redundancyの削除アルゴリズム_を使用しているため、Beanのプロパティのデフォルト値はストリームに書き込まれません。 – cutchin

+0

これは簡単なことだと分かっていました。 XMLファイルを使用して、ユーザーが実際に1つを読むことができるようにしました。私はフィールドを再考する必要があるかもしれません。 –

関連する問題