Мы все знаем, как создавать объекты любого класса. Самый простой метод создания объекта в Java — использование ключевого слова new. Давайте рассмотрим другие методы создания объектов без ключевого слова new.
1. Использование Class.newInstance()
Class ref = Class.forName("DemoClass");DemoClass obj =(DemoClass) ref.newInstance();
Class.forName() загружает DemoClass в память. Чтобы создать экземпляр этого класса, нам нужно использовать newInstance().
2. Использование ClassLoader
Как и метод выше, метод loadClass() загрузчика классов делает то же самое. Он создает новый экземпляр класса, используя существующий экземпляр того же класса.
instance.getClass().getClassLoader().loadClass("NewClass").newInstance();
3. Использование Object.clone()
Метод clone() также является способом создания нового независимого экземпляра класса.
NewClass obj = new NewClass();NewClass obj2 =(NewClass) obj.clone();
4. Использование сериализации и десериализации
Если вы изучили основы сериализации, вы можете понять, что сериализация и десериализация — это также способ иметь еще один экземпляр класса во время выполнения.
ObjectInputStream objStream = new ObjectInputStream(inputStream);NewClass obj =(NewClass ) inStream.readObject();
5. Использование отражения
Рефлексия также является популярным способом создания новых экземпляров в большинстве доступных фреймворков.
private <T> T instantiate(Class<?> input, Object parameter) {try {Constructor<?> constructor = ConstructorUtils.getMatchingAccessibleConstructor(input, parameter.getClass());return(T) constructor.newInstance(parameter);} catch(Exception e) {//handle various exceptions}}
Если вы считаете, что я упускаю какой-либо другой возможный способ, пожалуйста, дайте мне знать.