Istnieje pięć różnych sposobów tworzenia obiektu w Javie,
1. Za pomocą newsłowa kluczowego → wywołać konstruktora
Employee emp1 = new Employee();
2. Przy użyciu newInstance()metodyClass → konstruktora wywołaj
Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee")
.newInstance();
Można go również zapisać jako
Employee emp2 = Employee.class.newInstance();
3. Przy użyciu newInstance()metodyConstructor → konstruktora wywołaj
Constructor<Employee> constructor = Employee.class.getConstructor();
Employee emp3 = constructor.newInstance();
4. Korzystanie z clone()metody → brak wywołania konstruktora
Employee emp4 = (Employee) emp3.clone();
5. Korzystanie z deserializacji → brak wywołania konstruktora
ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
Employee emp5 = (Employee) in.readObject();
Pierwsze trzy newsłowa kluczowe metody i oba newInstance()zawierają wywołanie konstruktora, ale później dwie metody klonowania i deserializacji tworzą obiekty bez wywoływania konstruktora.
Wszystkie powyższe metody są powiązane z innym kodem bajtowym. Przeczytaj Różne sposoby tworzenia obiektów w Javie z Przykładem dla przykładów i bardziej szczegółowym opisem, np. Konwersja kodu bajtowego wszystkich tych metod.
Można jednak argumentować, że utworzenie obiektu tablicowego lub łańcuchowego jest również sposobem na utworzenie obiektu, ale te rzeczy są bardziej specyficzne tylko dla niektórych klas i obsługiwane bezpośrednio przez JVM, podczas gdy możemy stworzyć obiekt dowolnej klasy przy użyciu tych 5 sposobów.