Reflexion und Arrays

White_Fox

Top Contributor
Guten Abend allerseits

Folgendes Problem, beispielhaft dargestellt:

Java:
Object[] objectArray = new Object[23];

//...bla...

if(objectArray instanceof Array){
    //-> Hier will ich hin, aber ist nicht?
}
//...bla...

Ich habe irgendein Array und will wissen, das es ein Array ist. Wenn ich den Debugger anhalte und mir mit objectArray.getClass() ein Classobjekt liefern lassen will, dann heult er rum das objectArray keine Methode getClass() hat. 🙁

Hat jemand eine Idee, wie ich da weiterkomme? Ich will wissen ob ein Objekt ein Array ist, und im nächsten Schritt will ich wissen was das Array für Typen enthält und hinterher über die Objekte, die es enthält, iterieren.

Aber wie nur?
 
Guck mal auf den Import, was Array für ein Typ ist 🙂


Class#isArray und Class#getComponentType dürfte in die Richtung dessen gehen, was du suchest?

Alternativ objectArray instanceof Object[] und zu Object[] casten, darüber kannst du dann iterieren und wenn nötig auch mit dem Laufzeittyp der einzelnen Elemente arbeiten.

Wenn ich den Debugger anhalte und mir mit objectArray.getClass() ein Classobjekt liefern lassen will, dann heult er rum das objectArray keine Methode getClass() hat.
Kann ich nicht nachvollziehen, getClass geht für jeden Typen?
 
How about:
Java:
Object[] objectArray = new Object[23];

if (objectArray.getClass().isArray()) {
  System.out.println("yes");
}
 
Das mit den Imports war ein guter Punkt. Nach einem import java.lang.Object lief das durch. Und wenn ich stattdessen import java.lang.*, dann klappt das auch ohne Weiters, wenn ich im Unittest ein Array eines primitiven Datentyps vorsehe.

Dankeschön 🙂
 
Ja, stimmt. Und wenn ich den import wieder rausnehme, dann rennt der Test trotzdem noch einwandfrei durch. Ich versteh irgendwie noch nicht was da jetzt der Fehler war...

Aber ganz ehrlich: da es jetzt funktioniert ist es mir irgendwie auch egal. 😉
 

Neue Themen


Zurück
Oben