[java] view plain copy
- public class Dog{
- public Dog(){
- super();
- }
- }
1、new一个对象
[java] view plain copy
- Dog jack = new Dog();
2、利用class的反射机制,该种方式适用于有无参构造方法的
[java] view plain copy
- Class dogClass = Dog.class; //拿到class Dog的 Class实例对象
- Dog rose = (Dog) dogClass.newInstance(); //调用Class的实例方法 newInstance()创建Dog的实例对象
[java] view plain copy
- Class dogClass = Class.forName("Dog");
- Dog rose = (Dog) dogClass.newInstance();
3、利用java的对象,可序列化(对象在内存中的分配方式,在本地里保存一份一模一样的看,然后再取出来用,相当于把一个对象的状态完全保存住了,挺牛逼的啊,是不是游游戏里经常这么搞),利用封装类:ObjectOutputStream,ObjectInputStream。
前提:该类必须实现接口Serializable
[java] view plain copy
- public class CreateFour implements Serializable {
- public static void main(String args[]) {
- CreateFour fCreateFour = new CreateFour();
- ObjectOutputStream objectStream;
- try {
- objectStream = new ObjectOutputStream(new FileOutputStream("res/obj.txt"));
- objectStream.writeObject(fCreateFour);
- ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("res/obj.txt"));
- CreateFour cloneFour = (CreateFour) objectInputStream.readObject();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
4、利用Object下实例方法clone(),该类必须实现Cloneable接口,不然会抛出异常CloneNotSupportedException
[java] view plain copy
- public class CreateFour implements Cloneable {
- public static void main(String args[]) {
- CreateFour f = new CreateFour();
- try {
- CreateFour cloneObject = (CreateFour) f.clone();
- } catch (CloneNotSupportedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
5、总结
答:好啦,创建对象的4种方式,伙伴们都知道了………… 利用对象流,还是利用clone(),都会开辟新的内存空间,就是在jvm中的堆内存复制一个与源对象相同的新的对象(千万不要以为旧引用与新引用对应的是同一个对象哦)