Да, в 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