Итак, у меня есть ArrayList объектов неизвестного типа, расширяющих Entity (мой собственный класс, не путать java.swing.text.html.parser.Entity) по причинам, не связанным с Эта проблема.Добавить объект неизвестного класса в ArrayList с отражением
private ArrayList<? extends Entity> listedEntities = new ArrayList<>();
Это в классе, который в его конструктор принимает строку и присваивает его полю entityClass.
В каком-то момент я выполнение следующего фрагмента кода:
Class<?> clazz = Class.forName(this.entityClass);
Object newEntity = clazz.newInstance();
listedEntities.add(newEntity);
Естественно, это не работает, как ArrayList ожидает объект класса, простирающейся Entity и newEntity имеет Object. Так что сначала нужно было попробовать кастинг.
listedEntities.add(Class.forName(this.entityClass).cast(newEntity));
Также не работает. И через несколько минут, не найдя ответа, я здесь печатаю это.
Исключение:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method add(capture#8-of ? extends Entity) in the type ArrayList<capture#8-of ? extends Entity> is not applicable for the arguments (capture#9-of ?)
Как насчет забыть о '?' И использовать некоторые 'T' –
Есть ли веская причина, по которой вы используете' String' для 'entityClass' вместо' Class'? – Radiodef