您的位置:首页 > 编程语言 > Java开发

java 创建对象的几种方式

2016-07-27 10:55 381 查看
最简单的方式 使用 new 关键字,调用构造函数

package aa;

public class CC {

public CC() {

// TODO Auto-generated constructor stub
System.out.println("cc is created");
}

public static void main(String[] args) {
// TODO Auto-generated method stub

CC cc = new CC();
}

}


试验结果:`cc is created

使用Class类的newInstance方法,调用构造函数

package aa;

public class CC {

public CC() {

// TODO Auto-generated constructor stub
System.out.println("Class.forName()");
System.out.println("cc is created");
}

public static void main(String[] args) {
// TODO Auto-generated method stub

try {
CC C = (CC)Class.forName("aa.CC").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


试验结果

Class.forName()
cc is created


使用Reflect包中的Constructor类的newInstance方法,调用构造函数

package aa;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class CC {

public CC() {

// TODO Auto-generated constructor stub
System.out.println("constructor.newInstance()");
System.out.println("cc is created");
}

public static void main(String[] args) {
// TODO Auto-generated method stub

try {
Constructor<CC> constructor = CC.class.getConstructor();
CC c = constructor.newInstance();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


试验结果

constructor.newInstance()
cc is created


使用clone方法创建对象,其中Cloneable接口为标志接口,Clonable接口没有一个方法

package aa;

public class CC implements Cloneable {

public CC() {

// TODO Auto-generated constructor stub
System.out.println("sss");
System.out.println("cc is created");
}

@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
CC  cc =null;
cc = (CC) super.clone();
return cc;
}

@SuppressWarnings("unused")
public static void main(String[] args) {
// TODO Auto-generated method stub

CC cc = new CC();
try {
CC cc2 = (CC) cc.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


试验结果:

sss
cc is created


上面的构造函数是由 new 的操作产生的,说明clone方法并没有调用构造函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: