classBimplementsCloneable{publicvoidrun(){System.out.println("B");}@OverrideprotectedObjectclone()throwsCloneNotSupportedException{//克隆必须要实现的接口// TODO Auto-generated method stubreturnsuper.clone();}}publicclasstest{publicstaticvoidmain(String[]args){Ba=newB();try{Bb=(B)a.clone();//这返回的是Object类型的对象,还要下转一下。b.run();}catch(CloneNotSupportedExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.io.Serializable;classCimplementsSerializable{//序列化和反序列化要实现的接口publicvoidrun(){System.out.println("C");}}publicclasstest{publicstaticvoidmain(String[]args){Ca=newC();try{ObjectOutputStreamout=newObjectOutputStream(newFileOutputStream("data.obj"));out.writeObject(a);out.close();ObjectInputStreamin=newObjectInputStream(newFileInputStream("data.obj"));Cc=(C)in.readObject();//这返回的也是Object。c.run();}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
importjava.lang.reflect.Method;classD{publicvoidrun(){System.out.println("D");}}publicclasstest{publicstaticvoidmain(String[]args){try{Objectobj=Class.forName("D").newInstance();//Class.forName返回的是一个类,newInstance实例化一个对象Classclazz=obj.getClass();//获得类型类Methodmd=clazz.getMethod("run",null);//获取名为run的方法md.invoke(obj);//运行方法Dd=(D)Class.forName("D").newInstance();//也可直接下转d.run();}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
importjava.lang.reflect.Constructor;classE{publicvoidrun(){System.out.println("E");}}publicclasstest{publicstaticvoidmain(String[]args){try{Constructor<E>constructor=E.class.getConstructor();Ee=constructor.newInstance();e.run();}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}