java声明对象的方法_java创建对象的几种常用方法

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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值