2011-06-29 15 views
1

Javaクラス名の操作と解析を可能にするAPIはありますか?等のようなClassLoaderに渡されるであろうものとして、クラス名(存在する場合、任意の内部クラス名を抽出し、クラス名からパッケージ名を抽出するためのAPIを表すStringを与え例えばJavaクラスとパッケージ名の操作

、?

文字列からClassオブジェクトを作成して反射型メソッドを使用することはできません。すべてのクラスが作成される前に起こっているので、このコードは最初にClassを作成する方法を決定するために文字列を解析する必要があります。 APIはString秒で動作する必要があります。

答えて

0

はこれを追加します私は新しい答えを予期していません。文字列クラス名を解析できるAPIはJ2SEにはないと思います。独自のものを書くのはそれほど難しいことではなく、パッケージ名の形式などは言語仕様で定義されており、変更される可能性は低い(つまり、パッケージ名を区切るピリオド以外のものを使用し始めることはない)。

1

あなたの説明が何であるかは一般的です「リフレクション」として知られています。

+0

マイク・ブリューワー・デイヴィスの返信の直前の私のコメントを参照してください。 – BeeOnRope

3

あなたと働くことができるjava.lang.Class内の多くの方法があります:それはしばらくしているので

Class inner  = Class.forName("my.package.TopLevel$Inner"); 
Class topLevel = inner.getDeclaringClass(); 
Class[] allInner = topLevel.getDeclaredClasses(); 

Class anonymous = Class.forName("my.package.TopLevel$Inner$2"); 
Class stringArray = Class.forName("[Ljava.lang.String;");  

Package pkg = topLevel.getPackage(); 
+0

申し訳ありませんが、私はおそらく明確ではありません - クラス名を表すStringがあり、クラスローダーの実装の一環として、これらを解析したいと思います。だから私は間違いなくClassオブジェクトを持っていません。 – BeeOnRope