Heim >Java >javaLernprogramm >J2ME-Lernen – RMS vom Einstieg bis zur Beherrschung 2
Im ersten Teil der Serie haben wir uns auf die Grundlagen des Record Management Systems konzentriert. Bevor ich die Verwendung des Record Management Systems vorstelle, möchte ich zunächst Java IO und die Implementierung der Serialisierung auf der J2ME-Plattform vorstellen. Der obige Inhalt ist sowohl für das Record Management System als auch für das allgemeine Netzwerk-Framework in MIDP sehr wichtig.
Java definiert in CLDC
IO ist sehr kurz und prägnant, bietet aber auch genügend Klassen, um unsere IO-Operationen abzuschließen. Da die Implementierung bei J2SE üblich ist, können Sie J2ME für die Kommunikation mit J2SE- oder J2EE-Plattformen verwenden. Beispielsweise die Kommunikation mit Servlets über das Internet. inRecord
Management
Die Hauptklassen, die wir in System verwenden, sind ByteArrayInputStream, ByteArrayOutputStream, DataInputStream und DataOutputStream. Die ersten beiden sind bytebasiert. ByteArrayInputStream wird zum Konvertieren des Byte-Arrays in einen Stream verwendet, während ByteArrayOutputStream zum Konvertieren der Daten im Speicherpuffer in Bytes verwendet wird. Die beiden letztgenannten Klassen basieren auf Java-Basisdatentypen und String-Operationen. Normalerweise übergeben sie die ersten beiden Klassen als Parameter an den Konstruktor, damit dieser grundlegende Datentypen und String lesen und schreiben kann. Es ist zu beachten, dass die toByteArray()-Methode von ByteArrayOutputStream die Daten im Speicher kopiert und zurückgibt. Um den begrenzten Speicherplatz effektiver zu nutzen, können Sie die ByteArrayOutputSteam-Klasse erweitern und getByteArray() bereitstellen. Methode. Das Folgende ist ein Beispiel:
buf;
}
}
In J2ME ist kein Objektserialisierungsmechanismus vorgesehen, aber wir können ihn selbst implementieren . Betrachten Sie die folgende Klasse:
public class Bank
{
PRivate String bankName;
private String phone
private int EmployeeNum ;
public Bank(){}
public Bank(String 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 phone ! =null?phone:"";
}
public int getEmployeeNum()
{
return EmployeeNum;
}
}
Wir fügen dieser Klasse zwei Methoden hinzu, um die Objektserialisierung zu implementieren. Wie unten gezeigt:
public class Bank
{
private String bankName;
private String phoneNum;
public Bank(){}
public Bank(String 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 phone!= null?phone:"";
}
public int getEmployeeNum()
{
return EmployeeNum;
}
public byte[] serialize() throws IOException
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeUTF(getBankName());
dos.writeUTF(getPhone());
dos.writeInt(getEmployeeNum());
dos.flush();
return bos.toByteArray();
ByteArrayInputStream bis = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bis);
Bank myBank = new Bank();
myBank.bankName = dis.readUTF();
myBank.phone = dis.readUTF();
myBank.employeeNum = dis.readInt();
return myBank ;
}
}
Auf diese Weise haben wir die Serialisierung von Objekten erreicht und sie ist sehr einfach zu verwenden. Die Serialisierungs- und Deserialisierungsvorgänge sind wie folgt:
Bank aBank = ....;
RecordStore rs = ....; > {
byte[] data = aBank.serialize();
rs.addRecord(data,0,data.length);
}
catch(IOException e)
{
//etwas tun
}
catch(RecordStoreException e)
{
//etwas tun
}
???????????????????????? ?
byte[] data = ...........;
Bank aBank = null;
try
{
aBank = Bank.deserialize(data); 🎜>
Es ist erwähnenswert, dass in der Bank-Klasse alle unsere Mitglieder grundlegende Datentypen und String-Typen sind und es keine Verweise auf andere Objekte gibt Dies ist die idealste und einfachste Situation. Tatsächlich befinden wir uns in J2ME. Sie sollten dies auch beim Entwerfen serialisierter Klassen versuchen, um unnötige Probleme zu vermeiden.
Das Obige ist der Inhalt des J2ME-Lernens – RMS vom Einstieg bis zur Beherrschung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!