特定の型を保持する変数Class
があり、対応する配列クラスを保持する変数を取得する必要があります。私が思いつくのはこれです:Javaで指定されたクラスのArrayクラスを取得するには?
Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass();
新しいインスタンスを作成せずにこれを行う方法はありますか?
特定の型を保持する変数Class
があり、対応する配列クラスを保持する変数を取得する必要があります。私が思いつくのはこれです:Javaで指定されたクラスのArrayクラスを取得するには?
Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass();
新しいインスタンスを作成せずにこれを行う方法はありますか?
インスタンスを作成したくない場合は、手動で配列の正規名を作成し、名前でクラスを得ることができる:
// 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();
Class stringArrayOfClass = String[].class;
私は事前にタイプを知らないのです。これはClass変数にあります。あなたの方法はうまくいかないでしょう。 –
それを指摘してくれてありがとう –
彼は上記で始まり、私が持っているもので終わります。だから私は 'newInstance'がこれを行う最もクリーンな方法だと思います。 –
実際には両方の方法で動作しますが、新しいインスタンスを作成したくないと言っています。 –
真。私は実際にはよりクリーンなソリューションを探していました。新しいインスタンスを望んでいないわけではありませんが、私はむしろそれを持っていないはずです:-) –