2016-04-29 15 views
-1

文字列としてクラス名を持つとします。文字列としてクラス名からオブジェクトをインスタンス化します。

MyClass myObj = MyClass.class.cast(instance); 

基本的に私はMyClassObjectのインスタンスを変換したい:私はリフレクションを使用して、このクラスをインスタンス化し、このようなコードを使用せずに、タイプMyClassなくObjectのオブジェクトを持つことができますどのように

String myClass = "com.whatever.MyClass"; 

コード内でMyClassを使用せずにクラス名を文字列として認識するだけで済みます。

+0

あなたがすることはできません。これを 'MyClass'型の参照に代入するには、コンパイル時に' MyClass'が何であるかを知る必要があります。 –

+0

それを行う唯一の方法は、http://stackoverflow.com/questions/2215843/using-reflection-in-java-to-create-a-new-instance-with-the-reference-variable-ty – Tunaki

+0

あなたですファクトリパターンを見て、それらを何らかの種類の文字列インデックス付きコンテナに入れて呼び出すことができます。それがC++で行われた方法ですが、Javaについてはわかりません。 –

答えて

0

あなたはクラスのインスタンスを作成し、これまでにリフレクションを使用してコード内のクラスをインポートすることなく、そのメソッドを実行することができます。

Class clazz = Class.forName("com.whatever.MyClass"); 
Object instance = clazz.newInstance(); // or use the given instance 
clazz.getMethod("myMethod").invoke(instance); 
関連する問題