2012-09-05 27 views
7

パッケージ内のすべてのクラス名を印刷し、対応する属性とそのデータ型を各パッケージに出力します。文字列型をJavaのクラス型に変換する方法

1つのコードでは、文字列の形式でクラス名を取得できます。 別のコードでは、属性とそのデータ型を取得できます。Classname.class.getAttribute();

ただし、2つのコードをマージしたいとします。最初のコードでは文字列形式のクラス名を取得しているのでClassname.class.getAttribute()は使用できませんClassnameStringとなります。

"クラス名"をStringタイプからClassタイプに変換するメソッドが必要です。

私はClass.forName()を試しましたが、動作しませんでした。

+6

Class.forName()が動作しなかった方法を指定してください。 – skiphoppy

+3

Class.forName()がうまくいかなかった場合、a)クラス名が正しくない可能性があります。b)エラーメッセージが表示されましたが、何を意味するのか分からず、無視しました。 ;) –

+1

エラーメッセージを投稿してください! 'Class.forName() 'を使って試したところにコードを投稿してください –

答えて

16
Class<?> classType = Class.forName(className); 

classNameはまたcom.package.classのように完全修飾クラス名であることを確認し、あなたが見るあなたのエラーメッセージを共有してください。

+0

はい、classNameは完全修飾ではありませんでした。 完全修飾名を与えると、それは働いた:) ありがとう:) –

1

クラスの完全修飾名が使用可能な場合は、静的メソッドClass.forName()を使用して対応するクラスを取得できます。

例:

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 

注:あなたが機能を提供するパラメータは任意の参照用com.package.class

Check hereのような完全修飾クラス名であることを確認してください。

EDIT:

ます。またloadClass()メソッドを使用して試みることができます。

例:

ClassLoader cl; 
Class c = cl.loadClass(name); 

クラス参照を解決するために、Java仮想マシンによって呼び出されます。

構文:

public Class<?> loadClass(String name) 
        throws ClassNotFoundException 

For details on ClassLoader check here

Hereは、クラスローダの実装です。

0

次のようにしてください。

String str = "RequiredClassName";  
Class <?> Cref = Class .forName("PackageNaem."+str); 
関連する問題