Java 创建对象的不同姿势

使用new关键字     

     使用new关键字是创建对象的最基本方法。这是在java中创建对象的最常见方法。几乎99%的对象都是用这种方式创建的。通过使用这个方法,我们可以调用任何想要调用的构造函数(没有参数或参数化的构造函数)。

package org.cfj.objcreate;

public class NewKeywordEx {

String name="NewKeyCreateObj";

public static void main(String[]args) {

NewKeywordEx newKeywordEx=new NewKeywordEx();

System.out.println(newKeywordEx.name);

}

}

使用New Instance

      使用new instance:如果我们知道类的名称,并且它具有公共默认构造函数,则可以创建一个对象–Class.forName。 我们可以使用它来创建类的对象。 实际上,Class.forName使用Java加载了Class,但没有创建任何Object。 要创建该类的对象,您必须使用该类的新实例方法。

package org.cfj.objcreate;

public class NewInstanceEx {

String name = "newInstanceEx";

public static void main(String[]args)throws ClassNotFoundException, IllegalAccessException, InstantiationException {

Class cl = Class.forName("org.cfj.objcreate.NewInstanceEx");

NewInstanceEx newInstanceEx = (NewInstanceEx)cl.newInstance();

System.out.println(newInstanceEx.name);

}

}

使用Clone

   每当在任何对象上调用clone()时,JVM实际上会创建一个新对象,并将前一个对象的所有内容复制到其中。使用克隆方法创建对象不会调用任何构造函数。要在对象上使用clone()方法,我们需要实现Cloneable并在其中定义clone()方法。

package org.cfj.objcreate;

public class cloneEx implements Cloneable {

@Override

    protected Object clone()throws CloneNotSupportedException {

return super.clone();

}

private String name = "cloneEx";

CloneExModel cloneExModel = new CloneExModel("张三", "123");

public static void main(String[]args)throws ClassNotFoundException, IllegalAccessException, InstantiationException, CloneNotSupportedException {

cloneEx cloneEx = new cloneEx();

cloneEx cloneEx1 = (cloneEx)cloneEx.clone();

cloneEx1.name = "cloneEx1";

System.out.println(cloneEx.name);//输出:cloneEx

        System.out.println(cloneEx1.name);//输出:cloneEx1

        System.out.println(cloneEx == cloneEx1);//输出:false

        cloneEx1.cloneExModel.setUserName("张三clone");

System.out.println(cloneEx.cloneExModel.getUserName());//输出:张三

        System.out.println(cloneEx1.cloneExModel.getUserName());//输出:张三

    }

}

Note:

 这里我们创建的是现有对象的克隆,而不是任何新对象。

 类需要实现Cloneable接口,否则将抛出CloneNotSupportedException。

使用反序列化

还有 40% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥1.00 继续阅读

友情链接更多精彩内容