Ich verwende Reflektion, um ein Instanzfeld wie das folgende zu erhalten:
%Vor%Mit dem Feldobjekt kann ich prüfen, ob das Feld ein Array enthält, und wenn dies der Fall ist, würde ich gerne die Ints im Array durchlaufen. Wenn also das Objekt, das das obige Feld enthält, "foo" heißt, dann würde ich so etwas haben:
%Vor%Die obige Wertvariable enthält mein Array von Ints. Wie behandle ich dieses Objekt wie ein normales Array und iteriere über seine Werte?
Bearbeiten: Entschuldigung, ich habe einen entscheidenden Punkt zu meiner obigen Geschichte verpasst. Ich tue das oben in einer allgemeinen Weise, also weiß ich nicht, welches Primitiv das Array enthält. Es könnte ein int [] oder long [] usw. sein. So würde das Gießen nach int [] im langen [] Fall offensichtlich nicht funktionieren. Hoppla!
Sie können die Klasse java.lang.reflect.Array
verwenden, um auf die Länge und einzelne Elemente eines Arrays zuzugreifen. Die get
-Methode sollte auf generische Weise funktionieren und möglicherweise Grundelemente in ihren Wrapper-Objekten umschließen.
Diese Seite wird im Abschnitt "Arrays verwenden" behandelt.
Vereinfachung (und Ändern von Variablennamen ;-) aus der Beispielklasse array2
,
scheint das zu sein, wonach Sie suchen.
Bearbeiten : Das OP stellt jetzt klar, dass er nicht weiß, ob der primitive Typ im Array int
, long
oder was auch immer ist. Ich glaube, der einzige Weg, um damit umzugehen, ist ein if/else
"tree" basierend auf Prüfungen des Primitiventyps (wie in Integer.TYPE
oder was auch immer) - gefolgt von der entsprechenden Deklaration und der Umwandlung in die Verzweigung der Bedingung, die das identifiziert Geben Sie die Frage ein.
Tags und Links java reflection