2009-11-05 9 views
14

特定の型を保持する変数Classがあり、対応する配列クラスを保持する変数を取得する必要があります。私が思いつくのはこれです:Javaで指定されたクラスのArrayクラスを取得するには?

Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass(); 

新しいインスタンスを作成せずにこれを行う方法はありますか?

答えて

11

インスタンスを作成したくない場合は、手動で配列の正規名を作成し、名前でクラスを得ることができる:

// Replace `String` by your object type. 
Class stringArrayClass = Class.forName(
    "[L" + String.class.getCanonicalName() + ";" 
); 

しかしJakob Jenkov argues in his blogあなたのソリューションが良いものです、なぜならそれは文字列での操作を必要としません。

Class stringArrayClass = Array.newInstance(String.class, 0).getClass(); 
+2

彼は上記で始まり、私が持っているもので終わります。だから私は 'newInstance'がこれを行う最もクリーンな方法だと思います。 –

+0

実際には両方の方法で動作しますが、新しいインスタンスを作成したくないと言っています。 –

+0

真。私は実際にはよりクリーンなソリューションを探していました。新しいインスタンスを望んでいないわけではありませんが、私はむしろそれを持っていないはずです:-) –

-1
Class stringArrayOfClass = String[].class; 
+0

私は事前にタイプを知らないのです。これはClass変数にあります。あなたの方法はうまくいかないでしょう。 –

+2

それを指摘してくれてありがとう –

関連する問題