import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.*;
public class CreateObject {
public static void main(String[] args) {
Person p1 = new Person("cl", 18, new Clothes("black"));
Class<Person> personClass = Person.class;
Person p2 = null;
try {
p2 = personClass.newInstance();
System.out.println(p2 != null);
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("person.p"));
ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("person.p"))) {
objectOutputStream.writeObject(p1);
Person p3= (Person) objectInputStream.readObject();
if(p3 != null){
System.out.println(p3.toString());
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
try {
Person p4= (Person) p1.clone();
System.out.println(p4.toString());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
class Person implements Serializable, Cloneable {
private String name;
private transient Integer age;
private Clothes clothes;
@Override
protected Object clone() throws CloneNotSupportedException {
Person person = (Person) super.clone();
person.setClothes((Clothes) person.getClothes().clone());
return person;
}
}
@Data
@AllArgsConstructor
class Clothes implements Serializable,Cloneable {
private String color;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}