Найти тему
DEBAGanov

Java 287. Можно ли создать объект без использования оператора new в Java?

Да, в Java существует несколько способов создания объектов без использования оператора new:

  • С помощью метода Class.forName(String className).newInstance():
MyClass obj = (MyClass) Class.forName("MyClass").newInstance();

  • Использование метода newInstance(). С помощью метода Constructor.newInstance(Object... initargs):
Constructor<MyClass> constructor = MyClass.class.getConstructor();
MyClass obj = constructor.newInstance();

  • Использование метода clone(). С помощью метода clone(), если класс реализует интерфейс Cloneable:
MyClass obj1 = new MyClass();
MyClass obj2 = (MyClass) obj1.clone();

  • С помощью рефлексии и метода sun.misc.Unsafe.allocateInstance(Class<?> cls), который является не рекомендованным к использованию:

MyClass obj = (MyClass) sun.misc.Unsafe.getUnsafe().allocateInstance(MyClass.class);

  • Использование десериализации объекта
ObjectInputStream inStream = new ObjectInputStream(anInputStream );
MyClass object = (MyClass) inStream.readObject();

  • Создание строковых и массивных объектов
String s = "string object";

int[] a = {1, 2, 3, 4};

Есть и другие способы создания объектов, кроме использования оператора new. Но 95% создания объектов в Java выполняется только с помощью нового оператора.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov