1.直接new
2.clone方法
public class Test{
public static void main(String[] args) {
Sun sun = new Sun();
try {
Sun sun1= (Sun)sun.clone();
System.out.println(sun1==sun);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
class Sun implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException{
return super.clone();
}
}
3.反射
public class Test{
public static void main(String[] args) {
try {
Class c1 = Class.forName("com.zxm.Sun");
Class c2 = Sun.class;
try {
Sun sun1 = (Sun)c1.newInstance();
Sun sun2 = (Sun)c1.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
class Sun {
public Sun(){
System.out.println("sun构造方法");
}
}
4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
public class Test{
public static void main(String[] args) {
try {
Sun sun = new Sun();
System.out.println(sun);
FileOutputStream out = new FileOutputStream("D:\\text.txt");
ObjectOutputStream oout = new ObjectOutputStream(out);
oout.writeObject(sun);
oout.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:\\text.txt"));
Sun sun2 = (Sun) in.readObject();
System.out.println(sun2);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e1){
e1.printStackTrace();
} catch (ClassNotFoundException e2){
e2.printStackTrace();
}
}
}
class Sun implements Serializable{
public Sun(){
System.out.println("sun构造方法");
}
}