Existem cinco maneiras diferentes de criar um objeto em Java,
1. Usando a newpalavra-chave → construtor é chamado
Employee emp1 = new Employee();
2. Usando o newInstance()método deClass → construtor é chamado
Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee")
.newInstance();
Também pode ser escrito como
Employee emp2 = Employee.class.newInstance();
3. Usando o newInstance()método deConstructor → construtor é chamado
Constructor<Employee> constructor = Employee.class.getConstructor();
Employee emp3 = constructor.newInstance();
4. Usando o clone()método → nenhuma chamada de construtor
Employee emp4 = (Employee) emp3.clone();
5. Usando desserialização → nenhuma chamada de construtor
ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
Employee emp5 = (Employee) in.readObject();
Os três primeiros métodos de newpalavra-chave e ambos newInstance()incluem uma chamada de construtor, mas mais tarde dois métodos de clone e desserialização criam objetos sem chamar o construtor.
Todos os métodos acima têm bytecode diferente associado a eles, Leia Diferentes maneiras de criar objetos em Java com Exemplo para exemplos e descrição mais detalhada, por exemplo, conversão de bytecode de todos esses métodos.
No entanto, pode-se argumentar que a criação de um objeto de matriz ou string também é uma maneira de criar o objeto, mas essas coisas são mais específicas apenas para algumas classes e tratadas diretamente pela JVM, enquanto podemos criar um objeto de qualquer classe usando essas 5 maneiras.