iappli.lib.io
インタフェース SPObject


public interface SPObject

スクラッチパッドへのアクセスを定義するインターフェースです。
データの保存が必要なクラスに実装することにより、 そのクラスの保持するデータを保存したり、復元することができます。

本クラスを実装したオブジェクトを SPControl に渡すことで、 スクラッチパッドにアクセスします。スクラッチパッドを利用するには、 ADFの SPSize に、保存に必要なデータサイズを指定してください。

 【例】
 public class Test extends IApplication {
   public void start() {
     Sample s1 = new Sample(100);
     Sample s2 = new Sample(200);
     try {
       // s1 と s2 のデータを保存する
       int pos = 0;
       pos = SPControl.write(s1, pos);
       pos = SPControl.write(s2, pos);
     } catch (IOException e) { }
 
     Sample s3 = new Sample(0);
     Sample s4 = new Sample(0);
     try {
       // s1 と s2 のデータを s3 と s4 に復元する
       int pos = 0;
       pos = SPControl.read(s3, pos);
       pos = SPControl.read(s4, pos);
     } catch (IOException e) { }
   }
 }
 
 class Sample implements SPObject {
   public Sample(int a) {
     this.a = a;
   }
 
   // *** Sampleで使うデータを復元する
   public int readObject(DataInputStream in) throws IOException {
     a = in.readInt();
     return 4;
   }

   // *** Sampleで使うデータを保存する
   public int writeObject(DataOutputStream out) throws IOException {
     out.writeInt(a);
     return 4;
   }
   private int a = 0;
 }
 


メソッドの概要
 int readObject(java.io.DataInputStream in)
          スクラッチパッドからデータを取得します。
 int writeObject(java.io.DataOutputStream out)
          スクラッチパッドへデータを保存します。
 

メソッドの詳細

writeObject

int writeObject(java.io.DataOutputStream out)
                throws java.io.IOException
スクラッチパッドへデータを保存します。
DataOutputStreamで書き込んでください。
書き込み完了後、書き込んだデータの合計サイズを返してください。
書き込むデータは読み込むデータと同じ順序で指定します。
 【例】
 public int writeObject(DataOutputStream out) throws IOException {
   int  a = 100;
   byte b = 200;
   out.writeInt(a);        // a (int) を書き込む 4byte
   out.write(200);         // b (byte)を書き込む 1byte
   return 5;               // 書き込んだデータの合計サイズを返す。
 }
 
 public int readObject(DataInputStream in) throws IOException {
   int  a = in.readInt();  // a (int) を読み込む
   byte b = in.read();     // b (byte)を読み込む
   return 5;               // 読み込んだデータの合計サイズを返す。
 }
 

パラメータ:
out - スクラッチパッドへのデータ出力ストリームが渡されます。
戻り値:
書き込んだバイト数を返します。 SPControl.write(SPObject, int, int) で、 返される戻り値(書き込み位置の最後)に加算されます。 Javaの基本型のサイズにご注意ください。
例外:
java.io.IOException - DataOutputStreamの例外です。

readObject

int readObject(java.io.DataInputStream in)
               throws java.io.IOException
スクラッチパッドからデータを取得します。
DataInputStreamで読み込んでください。

読み込み完了後、読み込んだデータの合計サイズを返してください。
読み込むデータは書き込むデータと同じ順序で指定します。
 【例】
 public int writeObject(DataOutputStream out) throws IOException {
   int  a = 100;
   byte b = 200;
   out.writeInt(a);        // a (int) を書き込む 4byte
   out.write(200);         // b (byte)を書き込む 1byte
   return 5;               // 書き込んだデータの合計サイズを返す。
 }
 
 public int readObject(DataInputStream in) throws IOException {
   int  a = in.readInt();  // a (int) を読み込む
   byte b = in.read();     // b (byte)を読み込む
   return 5;               // 読み込んだデータの合計サイズを返す。
 }
 

パラメータ:
in - スクラッチパッドからのデータ入力ストリームが渡されます。
戻り値:
書き込んだバイト数を返します。 SPControl.write(SPObject, int, int) で、 返される戻り値(書き込み位置の最後)に加算されます。 Javaの基本型のサイズにご注意ください。
例外:
java.io.IOException - DataInputStreamの例外です。

Copyright ITmarks Inc. All rights reserved.