Object a = new Object();2. 通过class类的newInstance()方法
class EmpObj{
private String name;
public EmpObj() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
String s = EmpObj.class.toString();
String s1 = s.split(" ")[1];
Class> aClass = Class.forName(s1);
EmpObj emp = (EmpObj) aClass.newInstance();
System.out.println(emp);
或者
EmpObj empObj = EmpObj.class.newInstance();
System.out.println(empObj);
3. 使用构造器类的newInstance()方法
Constructor4. 使用clone()的手段constructor = EmpObj.class.getConstructor(); EmpObj emp = constructor.newInstance(); System.out.println(emp);
该方法需要在被克隆类中重新clone()方法,并且实现Cloneable接口,否则将会报错(CloneNotSupportedException)
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
EmpObj empObj = new EmpObj();
EmpObj newObj = (EmpObj) empObj.clone();
System.out.println(newObj);
5. 使用反序列化
注意:类应该先实现接口(Serializable )
// 序列化写入过程
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("obj.ser"));
EmpObj empObj = new EmpObj();
outputStream.writeObject(empObj);
outputStream.close();
// 反序列化读取
ObjectInputStream in = new ObjectInputStream(new FileInputStream("obj.ser"));
EmpObj o = (EmpObj) in.readObject();
System.out.println(o);
完整代码
package JTang.Test2;
import java.io.*;
import java.lang.reflect.Constructor;
import java.util.EnumMap;
public class TestCreatObject {
public static void main(String[] args) throws Exception {
// String s = EmpObj.class.toString();
// String s1 = s.split(" ")[1];
//
//
// Class> aClass = Class.forName(s1);
// EmpObj emp = (EmpObj) aClass.newInstance();
// System.out.println(emp);
// EmpObj empObj = EmpObj.class.newInstance();
// System.out.println(empObj);
// Constructor constructor = EmpObj.class.getConstructor();
// EmpObj emp = constructor.newInstance();
// System.out.println(emp);
// EmpObj empObj = new EmpObj();
// empObj.setName("zs");
// EmpObj newObj = (EmpObj) empObj.clone();
// System.out.println(newObj);
// 序列化写入过程
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("obj.ser"));
EmpObj empObj = new EmpObj();
outputStream.writeObject(empObj);
outputStream.close();
// 反序列化读取
ObjectInputStream in = new ObjectInputStream(new FileInputStream("obj.ser"));
EmpObj o = (EmpObj) in.readObject();
System.out.println(o);
}
}
class EmpObj implements Cloneable, Serializable {
private String name;
public EmpObj() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}



