Java – Criar um objeto sem usar o “new Construtor()”

As vezes, durante a codificação, precisamos criar um objeto de uma classe sem utilizar a sintaxe: “Classe obj = new Construtor()”. Podemos utilizar os seguintes modos:

1. Usar o método newInstance da Classe class:

Class c = Class.forName(“NomeClasse”);
NomeClasse obj = (NomeClasse) c.newInstance();

2. Usar o método clone() da java.lang.Object – Cria uma cópia de um objeto existente:

NomeClasse obj = new NomeClasse();
NomeClasse objCopiado = obj.clone();

3. Usar a deserialização da Object:

ObjectInputStream os = new ObjectInputStream(ObjDaClasseInputStream);
NomeClasse obj = (NomeClasse) os.readObject();

4. Usar o ClassLoader:

getClass().getClassLoader().loadClass(“NomeClasse”).newInstance();

5. Usar por Reflection:

constructor.newInstance() ou class.newInstance()

6. Também, podemos usar o Padrão “Factory Method”. Recomendo uma lida sobre isto.