使用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。
网友评论