Also habe ich eine ArrayList von Objekten unbekannten Typs erweitern Entity (meine eigene Klasse; nicht zu verwechseln java.swing.text.html.parser.Entity) aus Gründen, die nichts damit zu tun haben dieses Problem.Hinzufügen eines Objekts der unbekannten Klasse zu ArrayList mit Reflexion
Dies ist in einer Klasse, die in ihrem Konstruktor einen String empfängt und es dem Feld entityClass zuweist.
Irgendwann bin ich die Ausführung des folgenden Code:
Class<?> clazz = Class.forName(this.entityClass);
Object newEntity = clazz.newInstance();
listedEntities.add(newEntity);
Natürlich ist dies nicht wie die Arraylist ist ein Objekt einer Klasse erwartet erstreckt Entity und NewEntity von Object ist. Also war es das erste Mal, Casting zu versuchen.
listedEntities.add(Class.forName(this.entityClass).cast(newEntity));
Auch funktioniert nicht. Und nachdem ich ein paar Minuten keine Antwort gefunden habe, schreibe ich hier.
Die Ausnahme:
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 ?)
Wie wäre es mit '' '' '' '' '' '' ' –
Gibt es einen guten Grund, dass Sie' String' anstelle von 'Class' für' entityClass' verwenden? – Radiodef