java认证
JAVA资格认证考试要知道哪些知识点呢?
关注:40835  答案:1  悬赏:50
离问题结束还有
  • 待解决
  • 2017-09-30 08:38
最佳答案
暂无最佳答案    我来回答
全部回答
  • 1楼
  • 2017-09-30 09:51
在写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