packagetest.createObj;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.lang.reflect.Constructor;public classCreateObjTest {/***@paramargs*/@SuppressWarnings("rawtypes")public static voidmain(String[] args) {//一、new关键词新建一个对象
TestBean testbean1 = new TestBean("1","张三哈哈");//二、反射机制
TestBean testbean2 = null;try{
Class> clazz = Class.forName("test.createObj.TestBean");//当类中含有参数的构造函数 而没有无参构造函数时 会报java.lang.InstantiationException异常//则类里需要添加无参构造函数//testbean2 = (TestBean) clazz.newInstance();//或者用反射获取类的有参构造函数 通过有参构造函数实例化对象
Class[] paramTypes = {String.class,String.class};
Constructor constor=clazz.getConstructor(paramTypes);
testbean2= (TestBean) constor.newInstance("2","李四");
}catch(Exception e) {
e.printStackTrace();
}//三、克隆 但类必须要实现Cloneable接口 并且要在类里重写clone方法//jdl1.6中文api是这样说的://如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。//按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。//请参阅 Object.clone(),以获得有关重写此方法的详细信息。//注意,此接口不 包含 clone 方法。因此,因为某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。
TestBean testbean3 = null;try{
testbean3=(TestBean) testbean1.clone();
}catch(CloneNotSupportedException e) {
e.printStackTrace();
}//四、反序列化 但类要实现序列化接口
ObjectOutputStream objOutStream = null;
ObjectInputStream objInStream= null;
TestBean testbean4= null;try{
File file= new File("C:\\testbean.txt");if(!file.exists()){
file.createNewFile();
}//objOutStream = new ObjectOutputStream(new FileOutputStream(file));//objOutStream.writeObject(testbean1);
objInStream = new ObjectInputStream(newFileInputStream(file));
testbean4=(TestBean) objInStream.readObject();
}catch(Exception e) {
e.printStackTrace();
}finally{if(objOutStream!=null){try{
objOutStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}if(objInStream!=null){try{
objInStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
System.out.println("testbean1:"+testbean1);
System.out.println("testbean2:"+testbean2);
System.out.println("testbean3:"+testbean3);
System.out.println("testbean4:"+testbean4);
}
}