2009-04-22 14 views
4

私は、入力オブジェクトに対して反射を使用し、オブジェクトに格納されたデータに対して何らかの処理を行うコードを持っています。入力オブジェクトは、Stringやintやdoubleなどのようなものでもよく、時には多次元配列でもあります。私は二次元配列のためにそれを行う方法を知っていますが、私は任意の次元配列のために働く何かを好むでしょう。これを達成するためのガイダンスは参考になります。ありがとう、反射と多次元の配列

+0

私はCとポインタを使いこなして以来、多次元配列はどのプログラミング問題にも間違った答えをしていました。 1つの例外は、数学ベースの行列操作であるかもしれませんが、その多くの数学を持つものは、おそらくデータではなく、コードではありません(数学言語で書かれています)。それ以外のネストされた構造体、ネストされた配列、またはネストされたポインタ/配列の組み合わせは、常により明確に読み取られるようです。それは確かに私はちょうど正しい問題を見ていない可能性があります.. –

答えて

6

あなたは再帰またはループのいずれか、またはその両方のように聞こえます。

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

素敵な答え。私は同様のコードを作成しましたが、最初にそれを取得しました。 –

+1

なぜ「clazz」を別々に渡す必要がありますか? obj.getClass()ではないのですか? – newacct

+0

ハ、それは答えのボックスにコードを書くために得られるものです。 –