だから私は配列であるかもしれないオブジェクトを持っています。プリミティブでも、文字列でもかまいません。配列の場合、それは文字どおりの配列になります。オブジェクトを配列にキャスト
配列であるかどうかはわかりませんが、値を取得するために反復処理できるものにキャストできないようです。
// o is an object and clazz is the class of the o
if (clazz == Array.class) {
Class ofArray = o.getClass().getComponentType();
String arrayType = ofArray.getName(); // 'Double' for my test case
//ERROR: [D cannot be cast to [Ljava.lang.Object
Object[] objects = (Object[]) o;
}
私の背景はルビーとphp(ちょうどうまくいくでしょう)と静的なタイピングは私の頭を乱しています。何か案は?
EDIT:
これは
[D cannot be cast to [Ljava.lang.Object.
エラーをスローし、私は何をしないのですか?
if (o.getClass().isArray()) {
Object[] objects = (Object[]) o;
}
オブジェクトが配列かどうかをテストできます。この質問はそれに対処しています:http://stackoverflow.com/questions/219881/java-array-reflection-isarray-vs-instanceof次に、あなたは安全にキャストし、それを反復することができます。 – Marvo
私の例のキャストはなぜ機能しないのですか? –
わかりませんが、おそらくその特定のオブジェクトは配列ではありませんでした。 'clazz == Array.class'おそらくいくつかの非配列オブジェクトを通過させます。 – Marvo