Creating a New Object

new class / new instance

class ClassA {
}

//new Keyword

ClassA b = new ClassA();

// new instance

ClassA c = ClassA.class.newInstance();

// new instance in class constructor

Constructor<ClassA> d = ClassA.class.getConstructor()
                                    .newInstance();

cloneable

public class ClassA implements Cloneable {
  protected Object clone() throws CloneNotSupportedException {
  }

  ClassA obj1 = new ClassA();
  ClassA obj2 = obj1.clone();
}

serializable

public class ClassA implements Serializable {

}

public static void serialize(String[] args) {
  // Serialization
  ClassA classA;

  try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("classA.obj"))) {
    out.writeObject(classA);
  }
}

// deserialClassA Object will be created after deserialization process

public static void deserialize(String[] args) {
  // Deserialization
  ClassA deserialClassA;

  try (
      ObjectInputStream in = new ObjectInputStream(
          new FileInputStream("classA.obj"))
  ) {
    deserialClassA = (ClassA) in.readObject();
  }
}