2009-04-22 14 views
4

Ich habe Code, der Reflexion für ein Eingabeobjekt verwendet und einige Verarbeitung für die Daten im Objekt verarbeitet. Das Eingabeobjekt kann eine beliebige Zeichenfolge wie String oder int oder double usw. sein, manchmal kann es ein multidimensionales Array sein. Ich weiß, wie man es für zweidimensionale Arrays macht, aber ich würde etwas bevorzugen, das für jedes gegebene dimensionale Array funktionieren würde. Jede Anleitung, um dies zu erreichen, wird hilfreich sein. Danke,Reflexion und multidimensionale Arrays

+0

Seit ich angefangen habe, mit C und Zeigern zu spielen, fand ich mehrere Dimensionen Arrays die falsche Antwort auf jede Programmierfrage. Die einzige Ausnahme könnte eine math-basierte Matrixmanipulation sein, aber alles mit so viel Mathe sollte wahrscheinlich als Daten behandelt werden und überhaupt nicht (in einer Mathematiksprache geschrieben). Ansonsten scheinen geschachtelte Strukturen, verschachtelte Arrays oder verschachtelte Pointer/Array-Kombinationen immer deutlicher zu lesen. Es könnte sicherlich sein, dass ich gerade nicht das richtige Problem gesehen habe. –

Antwort

6

Klingt wie Sie entweder Rekursion oder eine Schleife oder beides benötigen.

void getStuffFromArray(Object obj) { 
    // assuming we already know obj.getClass().isArray() == true 
    Class<?> componentType = obj.getClass().getComponentType(); 
    int size = Array.getLength(obj); 
    for (int i = 0; i < size; i++) { 
     Object value = Array.get(obj, i); 
     if (value.getClass().isArray()) { 
      getStuffFromArray(value); 
     } else { 
      // not an array; process it 
     } 
    } 
} 
+0

nette Antwort. Ich habe einen ähnlichen Code ausgearbeitet, aber Sie haben ihn zuerst bekommen. –

+1

Warum müssen Sie "clazz" separat eingeben? ist es nicht nur obj.getClass()? – newacct

+0

Ha, das ist, was ich bekomme, um Code in die Antwortbox zu schreiben. –

Verwandte Themen