2012-04-28 6 views
2

私はそれを記述する方法を考えることはできませんが、基本的には現在のオブジェクトをデコードされたシリアライズされたXML 。メソッドがあるクラスのシリアル化されたXMLを符号化してデコードする

私は、現在のTillオブジェクトの状態に一致するXMLファイルを生成するので、saveTillXMLが動作することを知っています。[実際には、デコードが失敗するため、動作しないことはわかりません。

  • にjava.lang.reflect.InvocationTargetException
  • java.lang.IllegalStateException
  • java.lang.ArrayIndexOutOfBoundsException

は:私はloadTillXML()メソッドを呼び出したときしかし、私はこれらの例外を取得します私はウィンドウが閉じられたときにsaveTillXML()メソッドを呼び出し、Tillのコンストラクタの& loadTillXMLメソッドを呼び出します。

Tillが使用するすべてのクリップで、&を&まで無引数のコンストラクタをTillの&に持っています。

public void saveTillXML() throws IOException{ 
    XMLEncoder encoder=new XMLEncoder(new BufferedOutputStream(new FileOutputStream("till.xml"))); 
    encoder.writeObject(this); 
    encoder.close();   
} 

public static void loadTillXML() throws IOException{ 
    XMLDecoder decoder=new XMLDecoder(new BufferedInputStream(new FileInputStream("till.xml"))); 
    decoder.readObject();  
    decoder.close(); 
} 

私は考えることができる唯一のことは、私は現在のインスタンスが、それはデコードのXMLなるようにしたい場合はdecoder.readObject()はおそらくべきであるもの、に入らないという事実です。

ありがとうございます。

答えて

0

私は問題を解決できました。 loadTillXMLにはリターンメソッドが必要でした。それまではTillの外で呼び出す必要があると思うようになっていました。だから私は窓の中にあった​​の代わりにそれを使った。

加工方法:

public static Till loadTillXML() { 
    try{ 
     XMLDecoder decoder=new XMLDecoder(new BufferedInputStream(new FileInputStream("till.xml"))); 
     return (Till) decoder.readObject();  
    } 
    catch(FileNotFoundException fNFE){ 
     System.out.println("Cannot find file"); 
     Till till=new Till(); 
     return till; 
    } 
} 
関連する問題