クラスXの名前が文字列に格納されている場合、同じプロジェクトではあるが別のパッケージの別のクラスからクラスXのメソッドを実行する方法はありますか?ディレクトリで.javaファイルをスキャンし、それらの名前をStringに格納します。実行時に文字列変数内の名前のみを調べるときにクラスを使用するにはどうすればよいですか?
例えば、私はクラス 'main'と 'method1'を持っています - 私のプログラムは、そのファイルからクラスAの名前をStringに取得します。それから、main関数またはmethod1関数を実行できるようにしたいのですが、そこに到達するための操作方法がわかりません。これは私が試したことですが、例外エラーが発生して、それが右のトラック、任意の提案?:
//gets the filename from JFileChooser method_fc
File file = method_fc.getSelectedFile();
try {
Class c = Class.forName(file.getName());
Method method = c.getDeclaredMethod("main");
Object instance = c.newInstance();
Object result = method.invoke(instance);
} catch (Exception e) {
System.out.println("Cannot access class: "+e.getMessage());
}
提案1:だけではなく、「私は単に例外エラーが出る」、完全な例外を投稿してください。 –
最初の推測:ファイル名から.javaまたは.classを削除してください... –