完全修飾クラス名と次元数を指定すると、このクラスのクラス名を取得したいと考えています。私はこのようにすることができると信じていますランタイムのn次元配列のクラスを取得するクラス名
public Class<?> getArrayClass(String className, int dimensions) throws ClassNotFoundException {
Class<?> elementType = Class.forName(className);
return Array.newInstance(elementType, new int[dimensions]).getClass();
}
しかし、これは私がクラスの不要なインスタンスを作成する必要があります。インスタンスを作成せずにこれを行う方法はありますか?
Class.forName([[[Ljava/lang/String;])(またはアルゴリズム生成バージョン)は、私が見た様々なブログ投稿のすべてのインスタンスで正しく動作するようには見えません。 (bugs.sun.com/bugdatabase/view_bug.do?bug_id=6434149)
[[[[Ljava.lang.String; [[[[Ljava/lang/String; – dogbane
うーん、さまざまな投稿がすべての文脈では有効ではないと言っています。 – MeBigFatGuy
クラスのインスタンスではなく、長さが0の配列を作成しています。なぜあなたは、[[[[[Lclassnamehere;] '文字列のアルゴリズム構造は、ゼロの長さの配列を作るよりも安価か何らかの方法で良いと思うのですか?ところで、リンクされたバグは、Class.forName(...)ではなく、 'ClassLoader.loadClass(...)'を参照しています。 – Holger