シリーズのパート 1 では、記録管理システムの基本に焦点を当てました。レコード管理システムの使用方法を紹介する前に、まず Java IO と J2ME プラットフォームでのシリアル化の実装について紹介します。上記の内容は、レコード管理システムと MIDP の一般的なネットワーキング フレームワークの両方にとって非常に重要です。
CLDCで定義されたJava
IO は非常に短く簡潔ですが、IO 操作を完了するのに十分なクラスも提供します。実装は J2SE と共通であるため、J2ME を使用して J2SE または J2EE プラットフォームと通信できます。たとえば、インターネットを介してサーブレットと通信します。記録中
管理
System で使用する主なクラスは、ByteArrayInputStream、ByteArrayOutputStream、DataInputStream、および DataOutputStream です。最初の 2 つはバイトベースで、ByteArrayInputStream はバイト配列をストリームに変換するために使用され、ByteArrayOutputStream はメモリ バッファー内のデータをバイトに変換するために使用されます。後の 2 つのクラスは、Java の基本データ型と文字列操作に基づいています。通常、最初の 2 つのクラスをパラメータとしてコンストラクターに渡し、基本的なデータ型と String の読み書きができるようにします。注目すべき点の 1 つは、ByteArrayOutputStream の toByteArray() メソッドがメモリ内のデータをコピーして返すことです。これにより、余分なメモリが浪費されるため、ByteArrayOutputSteam クラスを拡張して getByteArray() を提供できます。 ) メソッドで、以下は例です:
public class MyByteArrayOutputStream extends ByteArrayOutputStream
{
public byte[] getByteArray()
{
return buf;
}
}
オブジェクトのシリアル化はありませんJ2ME メカニズムで提供されていますが、自分で実装することもできます。次のクラスを考えてみましょう:
public class Bank
{
PRivate String BankName;
private String Phone; ing aBankName,String aPhone , int aEmployeeNum)
{
this.bankName = aBankName;
this.phone = aPhone;
this.employeeNum = aEmployeeNum;
}
public String getBankName()
{
return BankName != null?bankName:"";
}
public String getPhone( )
{
return Telephone!=null?phone:"";
}
public int getEmployeeNum()
{
returnemployeeNum ;
}
}
これに2つのメソッドを追加しますオブジェクトのシリアル化を実装するクラス。以下に示すように:
public class Bank
{
private String Phone; BankName,String aPhone,int aEmployeeNum)
{
this.bankName = aBankName;
this.phone = aPhone;
this .employeeNum = aEmployeeNum;
}
public String getBankName()
{
return BankName !=null? BankName:"";
}
public String getPhone()
{
電話を返してください!=null? Phone:"";
}
public int getEmployeeNum()
{
returnemployeeNum;
}
public byte[] Serialize() throws IOException
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
do s.writeUTF(getBankName());
dos.writeUTF(getPhone());
dos.writeInt(getEmployeeNum());
dos.flush ();
return bos.toByteArray();
}
public Bank deserialize(byte[] data ) throws IOException
{
ByteArrayInputStream bis = new ByteArrayInputStream(data);
DataInputStream dis = 新しい DataInputStream( bis);
銀行myBank = new Bank();
myBank.bankName = dis.readUTF();
myBank.phone = dis.readUTF();
myBank.employeeNum = dis.readInt();
return myBank;
}
}
このようにして、オブジェクトのシリアル化が実現され、使い方は非常に簡単です。シリアル化と逆シリアル化の操作は次のとおりです。
Bank aBank = ....;
RecordStore rs = ....;
try
{
byte[] data = aBank .serialize() ;
rs.addRecord(data,0,data.length);
}
catch(IOException e)
{
//何かする
}
c catch(RecordStoreException e)
{
//何かする
}
????????????????????????
byte[] data = .. ....... ;
銀行 aBank = null;
try
{
aBank = Bank.deserialize(data);
}
catch(IOException e)
{
}
一つ注目すべきことは、 Bank クラスでは、メンバーはすべて基本的なデータ型と String 型であり、他のオブジェクトへの参照はありません。これは実際、J2ME でシリアル化を設計する場合にもこれを試してください。不要なトラブルを避けるためにクラスを作成します。
上記は、J2ME 学習 - RMS の入門から習得までの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。