读书人

四种失去java对象的方法

发布时间: 2012-11-19 10:18:51 作者: rapoo

四种得到java对象的方法

new一个对象可能非常熟悉,但由于反序列化,反射,克隆在开发中用得不多,有些会生疏。

??? 先定义一个简单的HelloBean,他有一个接口IHelloBean,还有会抛出异常NullNameException。

四种失去java对象的方法package?com.kompakar.tutorial.object.common;
四种失去java对象的方法
四种失去java对象的方法import?java.io.Serializable;
四种失去java对象的方法
四种失去java对象的方法//接口继承Cloneable,Serializable,可以用来克隆和序列化
四种失去java对象的方法public?interface?IHelloBean?extends?Cloneable,Serializable{
四种失去java对象的方法
四种失去java对象的方法????String?echoHello(String?name)?throws?NullNameException;
四种失去java对象的方法????IHelloBean?clone()?throws?CloneNotSupportedException;
四种失去java对象的方法????String?getName();
四种失去java对象的方法????
四种失去java对象的方法}
四种失去java对象的方法


HelloBean实现IHelloBean实现方法

四种失去java对象的方法package?com.kompakar.tutorial.object.common.impl;
四种失去java对象的方法
四种失去java对象的方法import?com.kompakar.tutorial.object.common.IHelloBean;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.NullNameException;
四种失去java对象的方法
四种失去java对象的方法public?class?HelloBean?implements?IHelloBean?{
四种失去java对象的方法
四种失去java对象的方法????private?static?final?long?serialVersionUID?=?7694044778894190986L;
四种失去java对象的方法????private?String?name?;
四种失去java对象的方法????
四种失去java对象的方法????public?HelloBean(){
四种失去java对象的方法????????
四种失去java对象的方法????}
四种失去java对象的方法
四种失去java对象的方法????public?HelloBean(String?name){
四种失去java对象的方法????????this.name?=?name;
四种失去java对象的方法????}
四种失去java对象的方法????
四种失去java对象的方法????//具体的业务方法
四种失去java对象的方法????@Override
四种失去java对象的方法????public?String?echoHello(String?name)?throws?NullNameException?{
四种失去java对象的方法
四种失去java对象的方法????????if(name?!=?null?&&?name.length()?>?0){
四种失去java对象的方法????????????return?"Hello,"?+?name?+?"!";
四种失去java对象的方法????????}else{
四种失去java对象的方法????????????throw?new?NullNameException("Null?Name?Exception");
四种失去java对象的方法????????}
四种失去java对象的方法????}
四种失去java对象的方法????
四种失去java对象的方法????//利用Object.clone()实现克隆
四种失去java对象的方法????@Override
四种失去java对象的方法????public?HelloBean?clone()?throws?CloneNotSupportedException?{
四种失去java对象的方法????????
四种失去java对象的方法????????return?(HelloBean)?super.clone();
四种失去java对象的方法????}
四种失去java对象的方法
四种失去java对象的方法????public?String?getName()?{
四种失去java对象的方法????????return?name;
四种失去java对象的方法????}
四种失去java对象的方法
四种失去java对象的方法????public?void?setName(String?name)?{
四种失去java对象的方法????????this.name?=?name;
四种失去java对象的方法????}
四种失去java对象的方法????
四种失去java对象的方法????
四种失去java对象的方法}
四种失去java对象的方法


自定义的业务异常,和得到对象没有关系

四种失去java对象的方法package?com.kompakar.tutorial.object.common;
四种失去java对象的方法
四种失去java对象的方法public?class?NullNameException?extends?Exception?{
四种失去java对象的方法
四种失去java对象的方法????private?static?final?long?serialVersionUID?=?-8862603561913984398L;
四种失去java对象的方法
四种失去java对象的方法????public?NullNameException(String?message)?{
四种失去java对象的方法?????????super(message);
四种失去java对象的方法????}
四种失去java对象的方法????
四种失去java对象的方法}
四种失去java对象的方法


我想new一个对象不用说,在这里还是写一下:

四种失去java对象的方法package?com.kompakar.tutorial.object.newo;
四种失去java对象的方法
四种失去java对象的方法import?com.kompakar.tutorial.object.common.IHelloBean;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.NullNameException;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.impl.HelloBean;
四种失去java对象的方法
四种失去java对象的方法public?class?NewObjectTest?{
四种失去java对象的方法
四种失去java对象的方法????/**
四种失去java对象的方法?????*?@param?args
四种失去java对象的方法?????*/
四种失去java对象的方法????public?static?void?main(String[]?args)?{
四种失去java对象的方法
四种失去java对象的方法????????//得到对象
四种失去java对象的方法????????IHelloBean?helloBean?=?new?HelloBean();
四种失去java对象的方法????????try?{
四种失去java对象的方法????????????//调用业务方法
四种失去java对象的方法????????????String?msg?=?helloBean.echoHello("Allen");
四种失去java对象的方法????????????//打印出返回的消息
四种失去java对象的方法????????????System.out.println(msg);
四种失去java对象的方法????????}?catch?(NullNameException?e)?{
四种失去java对象的方法????????????System.out.println(e.getMessage());
四种失去java对象的方法????????}
四种失去java对象的方法
四种失去java对象的方法????}
四种失去java对象的方法
四种失去java对象的方法}
四种失去java对象的方法



序列化/反序列化的过程是先将对象按照特定的规范,将对象序列化,形成一个可以存储传输的流。反序列化就是将该流转变成对象。

四种失去java对象的方法package?com.kompakar.tutorial.object.objectstream;
四种失去java对象的方法
四种失去java对象的方法import?java.io.FileInputStream;
四种失去java对象的方法import?java.io.FileNotFoundException;
四种失去java对象的方法import?java.io.FileOutputStream;
四种失去java对象的方法import?java.io.IOException;
四种失去java对象的方法import?java.io.ObjectInputStream;
四种失去java对象的方法import?java.io.ObjectOutputStream;
四种失去java对象的方法
四种失去java对象的方法import?com.kompakar.tutorial.object.common.IHelloBean;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.NullNameException;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.impl.HelloBean;
四种失去java对象的方法
四种失去java对象的方法public?class?SerializTest?{
四种失去java对象的方法
四种失去java对象的方法????/**
四种失去java对象的方法?????*?@param?args
四种失去java对象的方法?????*/
四种失去java对象的方法????public?static?void?main(String[]?args)?{
四种失去java对象的方法????????//得到对象
四种失去java对象的方法????????IHelloBean?helloBean?=?new?HelloBean("Benewu");
四种失去java对象的方法????????try?{
四种失去java对象的方法????????????//将对象写到本地,可以在磁盘中发现HelloBean.dat文件
四种失去java对象的方法????????????ObjectOutputStream?objout?=?new?ObjectOutputStream(new?FileOutputStream("HelloBean.dat"));
四种失去java对象的方法????????????objout.writeObject(helloBean);
四种失去java对象的方法????????????objout.close();
四种失去java对象的方法????????????
四种失去java对象的方法????????????//将本地的HelloBean.dat文件取出来并且转成对象
四种失去java对象的方法????????????ObjectInputStream?objin?=?new?ObjectInputStream(new?FileInputStream("HelloBean.dat"));
四种失去java对象的方法????????????IHelloBean?aHelloBean?=?(IHelloBean)?objin.readObject();
四种失去java对象的方法????????????objin.close();
四种失去java对象的方法????????????
四种失去java对象的方法????????????String?msg?=?aHelloBean.echoHello("Allen");
四种失去java对象的方法????????????System.out.println(aHelloBean.getName());
四种失去java对象的方法????????????System.out.println(msg);
四种失去java对象的方法????????}?catch?(FileNotFoundException?e)?{
四种失去java对象的方法????????????e.printStackTrace();
四种失去java对象的方法????????}?catch?(IOException?e)?{
四种失去java对象的方法????????????e.printStackTrace();
四种失去java对象的方法????????}catch(ClassNotFoundException?e){
四种失去java对象的方法????????????e.printStackTrace();
四种失去java对象的方法????????}catch(NullNameException?e){
四种失去java对象的方法????????????e.printStackTrace();
四种失去java对象的方法????????}
四种失去java对象的方法????}
四种失去java对象的方法}
四种失去java对象的方法


利用Object.clone()可以得到一个深度克隆的对象。

四种失去java对象的方法package?com.kompakar.tutorial.object.cloneo;
四种失去java对象的方法
四种失去java对象的方法import?com.kompakar.tutorial.object.common.IHelloBean;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.NullNameException;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.impl.HelloBean;
四种失去java对象的方法
四种失去java对象的方法public?class?CloneTest??{
四种失去java对象的方法
四种失去java对象的方法????/**
四种失去java对象的方法?????*?@param?args
四种失去java对象的方法?????*/
四种失去java对象的方法????public?static?void?main(String[]?args)?{
四种失去java对象的方法
四种失去java对象的方法????????IHelloBean?helloBean?=?new?HelloBean();
四种失去java对象的方法????????try?{
四种失去java对象的方法????????????IHelloBean?helloBeanClone?=?helloBean.clone();
四种失去java对象的方法????????????System.out.println(helloBeanClone.echoHello("Bene"));
四种失去java对象的方法????????}?catch?(CloneNotSupportedException?e)?{
四种失去java对象的方法????????????e.printStackTrace();
四种失去java对象的方法????????}catch(NullNameException?e){
四种失去java对象的方法????????????System.out.println(e.getMessage());
四种失去java对象的方法????????}
四种失去java对象的方法????????
四种失去java对象的方法????}
四种失去java对象的方法
四种失去java对象的方法}
四种失去java对象的方法



反射使用得比较多, 可以利用XML定义类型和参数,在使用的时候再动态加载。

四种失去java对象的方法package?com.kompakar.tutorial.object.reflectiono;
四种失去java对象的方法
四种失去java对象的方法import?java.lang.reflect.InvocationTargetException;
四种失去java对象的方法import?java.lang.reflect.Method;
四种失去java对象的方法
四种失去java对象的方法import?com.kompakar.tutorial.object.common.IHelloBean;
四种失去java对象的方法import?com.kompakar.tutorial.object.common.NullNameException;
四种失去java对象的方法
四种失去java对象的方法public?class?ReflectionTest?{
四种失去java对象的方法
四种失去java对象的方法????/**
四种失去java对象的方法?????*?@param?args
四种失去java对象的方法?????*?@throws?InvocationTargetException?
四种失去java对象的方法?????*?@throws??
四种失去java对象的方法?????*?@throws?NoSuchMethodException?
四种失去java对象的方法?????*?@throws?SecurityException?
四种失去java对象的方法?????*/
四种失去java对象的方法????public?static?void?main(String[]?args)??{
四种失去java对象的方法????????try?{
四种失去java对象的方法????????????//定义对象类型
四种失去java对象的方法????????????Class?c=?Class.forName("com.kompakar.tutorial.object.common.impl.HelloBean");
四种失去java对象的方法????????????Object?obj;
四种失去java对象的方法????????????//得到对象实例并且直接调用业务方法
四种失去java对象的方法????????????obj?=?c.newInstance();
四种失去java对象的方法????????????IHelloBean?helloBean?=?(IHelloBean)obj;
四种失去java对象的方法????????????String?msg?=?helloBean.echoHello("Baby");
四种失去java对象的方法????????????System.out.println(msg);
四种失去java对象的方法????????????
四种失去java对象的方法????????????//在这里可能永远都不知道方法名字是什么,而是动态加载进来,并进行访问
四种失去java对象的方法????????????//动态调用业务方法
四种失去java对象的方法????????????Class?sc?=?Class.forName("java.lang.String");
四种失去java对象的方法????????????Method?m?=?c.getMethod("echoHello",?new?Class[]{sc});
四种失去java对象的方法????????????Object?returnObj?=?m.invoke(helloBean,?"GIGI");
四种失去java对象的方法????????????System.out.println((String)returnObj);
四种失去java对象的方法????????????
四种失去java对象的方法????????????}?catch?(InstantiationException?e)?{
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}?catch?(IllegalAccessException?e)?{
四种失去java对象的方法????????????????//?TODO?Auto-generated?catch?block
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}?catch?(ClassNotFoundException?e)?{
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}catch?(NullNameException?e)?{
四种失去java对象的方法????????????????System.out.println(e.getMessage());
四种失去java对象的方法????????????}?catch(SecurityException?e){
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}catch(NoSuchMethodException?e){
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}catch(IllegalArgumentException?e){
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}catch(InvocationTargetException?e){
四种失去java对象的方法????????????????e.printStackTrace();
四种失去java对象的方法????????????}
四种失去java对象的方法????}
四种失去java对象的方法}
四种失去java对象的方法

读书人网 >编程

热点推荐