リフレクションについては勉強し始めたばかりなのでおかしな文章があるかもしれませんが最後まで読んでいただけたらうれしいです
Javaのリフレクションについて調べていたのですがわからないことがあります
それはフィールドが持っているメソッドの実行です
プログラムを書いているとフィールドをいろいろ作ることになりますよね?
int型もありますしString型もあります中には自分で作ったクラスをインスタンス化してフィールドに置いたりもしています
例えば、自分で作ったクラスがあるとします
Java
1public class A { 2 private String A = "A"; 3 4 public String getA () { 5 return A; 6 } 7}
これを別のクラスでフィールドにインスタンス化したとします
Java
1public class B { 2 A a = new A(); 3}
そしてリフレクションを使いクラスBにあるフィールドaの持つメソッド getA を実行したいのですがどうすればできるのでしょうか?
クラスBをリフレクションを使って生成し、フィールド a を取り出すところまではできるのですが取り出したフィールド a 内にある getA が実行できません
そもそも実行は不可能なのでしょうか?
今作っているもののソースを書きたいと思います
現在作っているのは.jarファイルを2つ用意して片方のJarファイルを操作するプログラムです
Java
1File file = new File(System.getProperty("user.dir") + "\\AAA.jar"); 2URL[] url = { file.toURI().toURL() }; 3MainJar = URLClassLoader.newInstance(url); 4 5Class<?> ClassB = MainJar.loadClass("B"); 6Field field = ClassB.getField("a"); 7Class<?> ClassA = field.getClass(); 8Method method = ClassA.getMethod("getA"); ←ここでエラー NoSuchMethodError が出ます 9 10String str = method.invoke();
よろしくお願いします
回答1件
あなたの回答
tips
プレビュー