创建对象(实例))的4种方式

[java] view plain copy

  1. public class Dog{  
  2.       
  3.     public Dog(){  
  4.         super();  
  5.     }  
  6.       
  7. }  

 

 

 

1、new一个对象

 

[java] view plain copy

  1. Dog jack = new Dog();  

 

 

 

2、利用class的反射机制,该种方式适用于有无参构造方法的

 

[java] view plain copy

  1. Class dogClass = Dog.class//拿到class Dog的 Class实例对象  
  2. Dog rose = (Dog) dogClass.newInstance(); //调用Class的实例方法 newInstance()创建Dog的实例对象  

 

 

 

[java] view plain copy

  1. Class dogClass = Class.forName("Dog");  
  2. Dog rose = (Dog) dogClass.newInstance();  

 

3、利用java的对象,可序列化(对象在内存中的分配方式,在本地里保存一份一模一样的看,然后再取出来用,相当于把一个对象的状态完全保存住了,挺牛逼的啊,是不是游游戏里经常这么搞),利用封装类:ObjectOutputStream,ObjectInputStream。

 

前提:该类必须实现接口Serializable

 

[java] view plain copy

  1. public class CreateFour implements Serializable {  
  2.       
  3.     public static void main(String args[]) {  
  4.         CreateFour fCreateFour = new CreateFour();  
  5.         ObjectOutputStream objectStream;  
  6.         try {  
  7.             objectStream = new ObjectOutputStream(new FileOutputStream("res/obj.txt"));  
  8.             objectStream.writeObject(fCreateFour);  
  9.               
  10.             ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("res/obj.txt"));  
  11.             CreateFour cloneFour = (CreateFour) objectInputStream.readObject();  
  12.         } catch (FileNotFoundException e) {  
  13.             // TODO Auto-generated catch block  
  14.             e.printStackTrace();  
  15.         } catch (IOException e) {  
  16.             // TODO Auto-generated catch block  
  17.             e.printStackTrace();  
  18.         } catch (ClassNotFoundException e) {  
  19.             // TODO Auto-generated catch block  
  20.             e.printStackTrace();  
  21.         }  
  22.     }  
  23.       
  24. }  

 

 

 

 

 

4、利用Object下实例方法clone(),该类必须实现Cloneable接口,不然会抛出异常CloneNotSupportedException

 

[java] view plain copy

  1. public class CreateFour implements Cloneable {  
  2.       
  3.     public static void main(String args[]) {  
  4.         CreateFour f = new CreateFour();  
  5.         try {  
  6.             CreateFour cloneObject = (CreateFour) f.clone();  
  7.         } catch (CloneNotSupportedException e) {  
  8.             // TODO Auto-generated catch block  
  9.             e.printStackTrace();  
  10.         }  
  11.     }  
  12.       
  13. }  

 


5、总结

 

答:好啦,创建对象的4种方式,伙伴们都知道了………… 利用对象流,还是利用clone(),都会开辟新的内存空间,就是在jvm中的堆内存复制一个与源对象相同的新的对象(千万不要以为旧引用与新引用对应的是同一个对象哦)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值