JAVA资格认证考试要知道哪些知识点呢?
关注:40835 答案:1 悬赏:50
离问题结束还有
最佳答案
暂无最佳答案 我来回答
全部回答
在写JAVAME程序的时候,我们经常需要保存一些数据到手机里面,也经常希望能把对象也保存到手机里面,但是JAVAME里面没有反射机制,也没有java.io.Serializable接口,所以没有序列化的机制,要保存对象的话,就得自己动手了。
在JAVAME中,程序的数据保存的地方,无外乎两种,一种是把数据保存在RMS里面,这是所有的JAVAME的手机都支持的,还有一种就是把数据保存在手机的文件系统里面,这个不是所有手机都能支持的,只有支持JSR075的手机,才支持把数据保存在文件系统里面,并且如果你的程序没有经过签名的话,你每次保存或者读取,手机都会弹出恼人的提示,是否允许程序访问文件系统。所在我一般都是把数据存在RMS里面,因为读写RMS是安全的,并且也是不需要手机提示的。因为我们的RMS数据是存在一个特殊的地方。但是JAVAME的RMS功能非常底层,为了保存一些数据,我们必须和 byte[]打交道,所以我就产生了,在此之前封装一层自己的程序的想法,这样封装好以后,使用起来就非常方便了。只要实现了相关接口,就可以享受到比较易用的方法了。
此框架总共包括了四个类,分别如下:Serializable类,它是一个接口,类似于JAVASE里面的Serializable接口,唯一不同的就是,JAVASE里面的接口是一个空接口,只做标记用的,而这里的这个接口是有方法需要实现的。
Lazy类,它也是一个接口,它定义了一些方法,如果你的对象比较大,需要惰性加载的时候,可以实现此接口,并且此接口是Serializable接口的子类,也就是说实现了Lazy接口,你就相当于实现了Serializable接口。
RMSUtil类,此类是一个工具类,用于统一进行RMS的相关操作,也是此框架的核心类。
RecordFetcher类,也是一个接口,它继承了RecordComparator, RecordFilter接口,在取数据的时候,需要用到它。
好了,下面我们就开始看代码吧。
1
5 package com.hadeslee.mobile.rms;
6
7 import java.io.IOException;
8
9
13 public interface Serializable {
14
15
19 public byte[] serialize() throws IOException;
20
21
25 public void unSerialize(byte[] data) throws IOException;
26
27
31 public void setId(int id);
32
33
39 public int getId();
40 }
41
1
5 package com.hadeslee.mobile.rms;
6
7 import java.io.IOException;
8
9
13 public interface Lazy extends Serializable {
14
15
27 public byte[] getAttach(Object key)throws IOException;
28
29
36 public void savedAttach(Object key, int id);
37
38
42 public Object[] getAttachKeys();
43
44
48 public String getNameOfAttachRMS();
49 }
50
1
5 package com.hadeslee.mobile.rms;
6
7 import javax.microedition.rms.RecordComparator;
8 import javax.microedition.rms.RecordFilter;
9
10
16 public interface RecordFetcher extends RecordComparator, RecordFilter {
17
18
22 public int getFromIndex();
23
24
28 public int getMaxRecordSize();
29 }
30
1
5 package com.hadeslee.mobile.rms;
6
7 import com.hadeslee.mobile.log.LogManager;
8 import java.util.Enumeration;
9 import java.util.Hashtable;
10 import java.util.Vector;
11 import javax.microedition.rms.RecordEnumeration;
12 import javax.microedition.rms.RecordStore;
13 import javax.microedition.rms.RecordStoreException;
14
15