Существует пять различных способов создания объекта в Java,
1. Используя new
ключевое слово → вызывать конструктор
Employee emp1 = new Employee();
2. Используя newInstance()
метод Class
→ конструктор вызывается
Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee")
.newInstance();
Это также можно записать как
Employee emp2 = Employee.class.newInstance();
3. Используя newInstance()
метод Constructor
→ вызывается конструктор
Constructor<Employee> constructor = Employee.class.getConstructor();
Employee emp3 = constructor.newInstance();
4. Использование clone()
метода → без вызова конструктора
Employee emp4 = (Employee) emp3.clone();
5. Использование десериализации → нет вызова конструктора
ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
Employee emp5 = (Employee) in.readObject();
Первые три метода new
ключевое слово и оба newInstance()
включают вызов конструктора, но позже два метода клонирования и десериализации создают объекты без вызова конструктора.
Все вышеперечисленные методы имеют разные байт-коды, связанные с ними. Прочитайте Различные способы создания объектов в Java с примером для примеров и более подробного описания, например. преобразование байт-кода всех этих методов.
Однако можно утверждать, что создание массива или строкового объекта также является способом создания объекта, но эти вещи более специфичны только для некоторых классов и обрабатываются непосредственно JVM, тогда как мы можем создать объект любого класса, используя 5 способов.