2017-10-07 5 views
1

Ich versuche Felder der java.lang.Integer-Klasse zu drucken. Nur die primitiven Felder und Arrays, ihre Elemente - die Indizes.[C kann nicht in [Ljava.lang.Object;

Ich bekomme Fehler beim Array-Druckteil.

else if(field.getType().isArray()) 
{     
    String printValue = Arrays.toString((Object[]) field.get(obj));     
} 

aber es gibt mir den Fehler im Titel erwähnt:

dies Code, den ich dafür haben Schnipsel.

+1

Was ist die genaue Fehlermeldung? Können Sie ein kurzes und vollständiges Beispiel geben, das das Problem reproduziert? – Zabuza

Antwort

2

Der Feldtyp ist char[]. Sie können das nicht in Object[] umwandeln, da primitive Arrays keine Instanzen von Object[] sind.

Sie können die Accessor-Methoden Array der Klasse nützlich finden.

Zum Beispiel:

Object val = field.get(obj); 
Object[] objs = 
    IntStream.range(0, Array.getLength(val)) 
     .mapToObj(i -> Array.get(val, i)) 
     .toArray(); 
String printValue = Arrays.toString(objs); 

Obwohl Notiz dies zumindest ein Array schafft und alle Werte boxen. Sie müssen diese nicht erstellen, wenn Sie nur eine if/else-Ladder haben, die den Typ des Arrays testet und das explizite Casting:

Verwandte Themen