У меня есть ArrayList, который содержит объекты возможно разных классов и требует вызова конструкторов классов.Java: вызов конструктора класса
ArrayList list = new ArrayList();
list.add(new Child1());
list.add(new Child2());
public void Spawn(){
Class clazz = list.get(0).getClass();
list.add(clazz.getConstructor().newInstance());
}
Как я могу это достичь? Последняя строка в коде возвращает ошибку, потому что clazz.getConstructor().newInstance()
возвращает объект, а не экземпляр child1. В разных элементах списка будет общий родительский элемент, и на самом деле элементы в списке могут быть одинаковыми, но я просто не могу жестко закодировать имя класса в программе.
Редактировать: Возможно, я удалил пример слишком далеко.
У меня в основном есть класс, который манипулирует ArrayLists и должен добавлять новые экземпляры объектов, которые уже существуют внутри, но список может иметь разные типы классов внутри него.
Редактировать: Основываясь на любых ответах, это, очевидно, неправильный подход к решению проблемы! Я думаю, что попробую метод клонирования для объектов внутри освещенного, но я также буду искать другой подход. Спасибо за помощь.
Почему, ну почему вы бы использовать сырые ArrayList в первую очередь? – Zavior
Передать возвращенный объект соответствующему типу. – keshlam
Это звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) (см. Ссылку). Можете ли вы рассказать о том, почему вы даже думаете, что вам нужно это сделать? У меня есть сильное подозрение, что существует гораздо лучший подход к решению общей проблемы (а не к конкретному кодовому вопросу). –