欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    对象序列化对象流国际化.ppt

    • 资源ID:91543677       资源大小:312.99KB        全文页数:30页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    对象序列化对象流国际化.ppt

    对象序列化的概念对对象象的的持持续续性性可可以以永永久久性性保保存存一一个个对对象象的的状状态态并并在在需需要要时时获获取取该该对对象象的的信信息息(重重新新创创建建一一个个完完全全相相同同的的对象);对象);对对象象序序列列化化通通过过写写出出对对象象的的状状态态数数据据来来记记录录一一个个对对象。象。对对象象序序列列化化的的主主要要任任务务:写写出出对对象象所所有有成成员员变变量量的的值值,包括引用类型成员变量对应的对象的信息。包括引用类型成员变量对应的对象的信息。对象序列化的概念目标:将对象保存到磁盘或者在网络中传递目标:将对象保存到磁盘或者在网络中传递通过对象序列化,可以将对象保存在磁盘或网络中通过对象序列化,可以将对象保存在磁盘或网络中为为了了实实现现对对象象序序列列化化,对对应应的的类类必必须须实实现现下下面面的的两两种种接口之一:接口之一:SerializableSerializableExternalizableExternalizable对象序列化的实现方式 要序列化一个对象,其所属的类必须实现以下两种要序列化一个对象,其所属的类必须实现以下两种 接口之一:接口之一:SerializableSerializable 在流中必须保存有恢复成兼容类型对象所需的各成员在流中必须保存有恢复成兼容类型对象所需的各成员变量的值。变量的值。ExternalizableExternalizable类自身定义其对象的外部存储格式。类自身定义其对象的外部存储格式。ObjectOutputStream ObjectOutputStream ObjectOutputStream 类提供对象的序列化处写出功能。类提供对象的序列化处写出功能。FileOutputStream f=new FileOutputStream(tmp);FileOutputStream f=new FileOutputStream(tmp);ObjectOutputStream s=new ObjectOutputStream(f);ObjectOutputStream s=new ObjectOutputStream(f);s.writeObject(Today);s.writeObject(Today);s.writeObject(new Date();s.writeObject(new Date();s.flush();s.flush();writeObjectwriteObject方方法法序序列列化化指指定定的的对对象象,并并遍遍历历该该对对象象对对其其它它对对象象的的引引用用,递递归归的的序序列列化化所所有有被被引引用用到到的的其其它它对对象象,从而建立一个完整的序列化流。从而建立一个完整的序列化流。ObjectInputStream ObjectInputStreamObjectInputStream类提供读取序列化对象的功能类提供读取序列化对象的功能FileInputStream in=new FileInputStream(tmp);FileInputStream in=new FileInputStream(tmp);ObjectInputStream s=new ObjectInputStream(in);ObjectInputStream s=new ObjectInputStream(in);String today=(String)s.readObject();String today=(String)s.readObject();Date date=(Date)s.readObject();Date date=(Date)s.readObject();readObjectreadObject方方法法反反序序列列化化输输入入流流中中的的下下一一个个对对象象,遍遍历历该该对对象象中中所所有有对对其其它它对对象象的的引引用用,并并递递归归的的反反序序列列化化这这些引用对象。些引用对象。Serializable 接口接口只是用来标识出一个类接口只是用来标识出一个类 能够被序列化,并未定义任何抽象方法能够被序列化,并未定义任何抽象方法public interface Serializable public interface Serializable 序列化的内容被序列化的内容:被序列化的内容:成员变量(包括基本数据类型、数组、对其它对象成员变量(包括基本数据类型、数组、对其它对象 的引用)的引用)类类 名名不被序列化的内容:不被序列化的内容:static static的属性的属性 方法方法 加了加了transienttransient修饰符的属性修饰符的属性对象序列化举例 1class Name implements Comparable,Serializable private String firstName,lastName;public Name(String f,String l)firstName=f;public String getFirstName()return firstName;public String getLastName()return lastName;public String toString()return firstName+.+lastName;对象序列化举例 1(续1)public boolean equals(Object obj)if(obj instanceof Name)Name name=(Name)obj;return(firstName.equals(name.firstName)&(lastName.equals(name.lastName);return super.equals(obj);public int hashCode()return 31*firstName.hashCode()+lastName.hashCode();public int compareTo(Object o)Name n=(Name)o;int lastCmp=lastNpareTo(n.lastName);return(lastCmp!=0?lastCmp:firstNpareTo(n.firstName);对象序列化举例 1(续2)import java.io.*;import java.util.*;public class Test public static void main(String args)List nameList=new ArrayList();nameList.add(new Name(A,C);nameList.add(new Name(B,B);nameList.add(new Name(C,A);nameList.add(new Name(D,A);nameList.add(new Name(E,B);System.out.println(nameList);Collections.sort(nameList);System.out.println(nameList);try FileOutputStream fos=new FileOutputStream(d:namelist.obj);ObjectOutputStream oos=new ObjectOutputStream(fos);System.out.println(save object.);oos.writeObject(nameList);catch(IOException e)e.printStackTrace();System.exit(-1);对象序列化举例 1(续3)try FileInputStream fis=new FileInputStream(d:namelist.obj);ObjectInputStream ois=new ObjectInputStream(fis);System.out.println(loading object.);List arrayList=(ArrayList)ois.readObject();System.out.println(nameList);Collections.shuffle(nameList);System.out.println(nameList);catch(FileNotFoundException e1)e1.printStackTrace();catch(IOException e1)e1.printStackTrace();catch(ClassNotFoundException e1)e1.printStackTrace();在网络中传递对象建立一个建立一个SocketSocket连接,在这个连接之间传递系列化后连接,在这个连接之间传递系列化后的对象的对象对象序列化举例 2import java.io.*;import .*;import java.util.Date;public class Server public static void main(String args)try ServerSocket server=new ServerSocket(6888);Socket socket=server.accept();ObjectInputStream ois=new ObjectInputStream (socket.getInputStream();Name name=(Name)ois.readObject();Date date=(Date)ois.readObject();socket.close();System.out.println(date);System.out.println(name);catch(Exception e)e.printStackTrace();对象序列化举例 2(续)import java.io.*;import .*;import java.util.Date;public class Client public static void main(String args)try Socket socket=new Socket(localhost,8020);ObjectOutputStream oos=new ObjectOutputStream (socket.getOutputStream();oos.writeObject(new Name(A,B);oos.writeObject(new Date();oos.flush();oos.close();catch(Exception e)System.exit(1);定制对象系列化可以通过定制对象系列化改变默认的系列化机制可以通过定制对象系列化改变默认的系列化机制通过在可系列化的类中实现方法通过在可系列化的类中实现方法writeObject(ObjectOutputStream out)writeObject(ObjectOutputStream out)和和readObject(ObjectInputStream in)readObject(ObjectInputStream in),可以实现定制,可以实现定制使用transient关键字保护数据通过在属性前面加上通过在属性前面加上transienttransient关键字,限制属性写入关键字,限制属性写入到文件或网络中到文件或网络中还可以在未实现系列化接口的引用类型属性前面加上还可以在未实现系列化接口的引用类型属性前面加上transienttransient关键字,避免对此类属性进行递归系列化时关键字,避免对此类属性进行递归系列化时出现异常出现异常系列化的另一种方式可以让需要系列化的类实现可以让需要系列化的类实现SerializableSerializable接口的子接口接口的子接口ExternalizableExternalizableExternalizableExternalizable接口表示实现该接口的类在序列化中由该接口表示实现该接口的类在序列化中由该类本身来控制信息的写出和读入。类本身来控制信息的写出和读入。ExternalizableExternalizable接口定义:接口定义:package java.io;package java.io;public interface Externalizable extends Serializablepublic interface Externalizable extends Serializablepublic void writeExternal(ObjectOutput out)throws public void writeExternal(ObjectOutput out)throws IOException;IOException;public void readExternal(ObjectInput in)throws IOException,public void readExternal(ObjectInput in)throws IOException,java.lang.ClassNotFoundException;java.lang.ClassNotFoundException;系列化的另一种方式步骤:步骤:实现实现ExternalizableExternalizable接口接口实现实现readExternal()/writeExternal()readExternal()/writeExternal()方法方法需要一个不带参数的构造器(是否需要显式定义根据类需要一个不带参数的构造器(是否需要显式定义根据类是否有定义构造器而定)是否有定义构造器而定)小结描述对象序列化的目标描述对象序列化的目标编程实现对象序列化编程实现对象序列化了解了解java.iojava.io包中和系列化有关的内容,掌握主要的包中和系列化有关的内容,掌握主要的接口接口编程实现序列化的对象在网络上的传输编程实现序列化的对象在网络上的传输描述对象序列化的原理描述对象序列化的原理transienttransient的用法的用法Serializable/ExternalizableSerializable/Externalizable的异同的异同国际化软件国际化的意义软件国际化的意义如何确定如何确定localelocale数字、货币的国际化数字、货币的国际化日期和时间的国际化日期和时间的国际化使用资源文件使用资源文件使用属性文件使用属性文件消息的国际化消息的国际化确定locale一个一个localelocale包括:国家(地区)以及语言包括:国家(地区)以及语言使用使用LocaleLocale类来表示类来表示Locale(String language)Locale(String language)Locale(String language,String country)Locale(String language,String country)Locale(String language,String country,String Locale(String language,String country,String variant)variant)countrycountry表示有效的表示有效的ISOISO国家代码国家代码VariantVariant是预留给第三方软件开发商或浏览器使用的一个是预留给第三方软件开发商或浏览器使用的一个附加变量附加变量Locale类常用方法:常用方法:getLanguage()getLanguage()getCountry()getCountry()getDisplayLanguage()getDisplayLanguage()getDisplayCountry()getDisplayCountry()toString()toString():语言:语言_ _国家国家获取默认的localeLocale.getDefault()Locale.getDefault():获取系统默认的:获取系统默认的localelocale和数字相关的格式化NumberFormatNumberFormat类类数字(数字(NumericNumeric):):getNumberInstance()/getNumberInstance(Locale lcl)getNumberInstance()/getNumberInstance(Locale lcl)货币货币(CurrencyCurrency):):getCurrencyInstance()/getCurrencyInstance(Locale lclgetCurrencyInstance()/getCurrencyInstance(Locale lcl)百分比(百分比(PercentPercent):):getPercentInstance()/getPercentInstance(Locale lcl)getPercentInstance()/getPercentInstance(Locale lcl)日期/时间格式化DateFormatDateFormatDateFormat getDateInstance()DateFormat getDateInstance()DateFormat getDateInstance(int dateStyle,Locale lcl)DateFormat getDateInstance(int dateStyle,Locale lcl)DateFormat getTimeFormat()DateFormat getTimeFormat()DateFormat getTimeFormat(int timeStyle,Locale lcl)DateFormat getTimeFormat(int timeStyle,Locale lcl)DateFormat getDateTimeFormat()DateFormat getDateTimeFormat()DateFormat getDateTimeFormat(int dateStyle,int DateFormat getDateTimeFormat(int dateStyle,int timeStyle,Locale lcl)timeStyle,Locale lcl)dateStyle/timeStyledateStyle/timeStyle可以取如下的值:可以取如下的值:DateFormat.DEFAULTDateFormat.DEFAULTDateFormat.LONGDateFormat.LONGDateFormat.MEDIUMDateFormat.MEDIUMDateFormat.SHORTDateFormat.SHORTDateFormat.FULLDateFormat.FULL使用SimpleDateFormatSimpleDateFormatSimpleDateFormat简化了日期和时间的格式化简化了日期和时间的格式化它主要用于本地化它主要用于本地化资源包讲信息封装在资源包(讲信息封装在资源包(Resource BundleResource Bundle)中)中在在java.utiljava.util中提供了一个中提供了一个ResouceBundleResouceBundle类,用于表类,用于表示资源包示资源包资源包命名规定:资源包命名规定:XXXResource_language_country_variant/XXXResourcXXXResource_language_country_variant/XXXResource_language_country/XXXResource_language/XXXResoe_language_country/XXXResource_language/XXXResourceurce通过通过ResourceBundleResourceBundle类的类的getBundle(String getBundle(String bundleName,Locale lcl)bundleName,Locale lcl)方法可以取得对应方法可以取得对应localelocale的的资源包资源包得到得到bundlebundle后,使用后,使用ResourceBundleResourceBundle对象的对象的getObject()/getStringgetObject()/getString()()方法可以获得对应的信息方法可以获得对应的信息资源包(con.)我们通常将自己定义的我们通常将自己定义的ResouceBundleResouceBundle类继承类继承ListResourceBundleListResourceBundle或者或者PropertyResourceBundlePropertyResourceBundle类,类,然后实现其中的然后实现其中的getContents()getContents()方法方法如果资源中有除如果资源中有除StringString外的其他对象,使用外的其他对象,使用ListResourceBundleListResourceBundle,否则使用,否则使用PropertyResourceBundlePropertyResourceBundle使用属性文件如果只有如果只有StringString类型资源,只需要使用属性文件即可类型资源,只需要使用属性文件即可属性文件的命名和资源包文件类似,并且注意将扩展属性文件的命名和资源包文件类似,并且注意将扩展名命名为名命名为.properties.propertiesResourceBundleResourceBundle的的getBundle()getBundle()方法将会找出对应的属方法将会找出对应的属性文件,并且将它转换成性文件,并且将它转换成PropertyResourceBundlePropertyResourceBundle对对象,我们不需要自己去产生象,我们不需要自己去产生PropertyResourceBundelPropertyResourceBundel对象对象消息的格式化使用使用MessageFormatMessageFormat来对消息进行格式化来对消息进行格式化将文本消息写成一个字符串,在其中不确定的部分使将文本消息写成一个字符串,在其中不确定的部分使用占位符,在一个字符串中最多可以使用用占位符,在一个字符串中最多可以使用1010个占位符个占位符(0909),每个占位符可以多次使用;),每个占位符可以多次使用;建立一个建立一个MessageFormatMessageFormat对象,将格式字符串作为构造对象,将格式字符串作为构造器的参数;器的参数;使用使用MessageFormatMessageFormat的的setLocale()setLocale()方法设置它的方法设置它的LocaleLocale属性;属性;建立一个用于取代占位符的对象的数组,让占位符中建立一个用于取代占位符的对象的数组,让占位符中的数字和数组的索引匹配;的数字和数组的索引匹配;调用调用MessageFormatMessageFormat的的format()format()方法,将对象数组作为方法,将对象数组作为参数。参数。

    注意事项

    本文(对象序列化对象流国际化.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开