Reflexion und Arrays

Diskutiere Reflexion und Arrays im Allgemeine Java-Themen Bereich.
W

White_Fox

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?
 
mrBrown

mrBrown

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?
 
Flown

Flown

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

if (objectArray.getClass().isArray()) {
  System.out.println("yes");
}
 
W

White_Fox

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 :)
 
mrBrown

mrBrown

java.lang.* ist immer implizit importiert, das braucht man nicht zusätzlich :)
 
W

White_Fox

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. ;)
 
Thema: 

Reflexion und Arrays

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben