「Java8」Methodオブジェクトのサンプル
環境
Eclipse 2019
jdk1.8
1.Personクラスの定義
package com.arkgame.testinfo; public class Person { // ユーザ名 private String name; // ユーザID private int ID; // アドレス public String addr; // コンストラクタ public Person(String name, int ID) { this.name = name; this.ID = ID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getID() { return ID; } public void setID(int iD) { ID = iD; } public void FuncA() { System.out.println("名前: " + name); } public void show(String addr) { System.out.println("都市: " + addr); } }
2.Methodオブジェクト
public Method getMethod(String name,Class<?>... parameterTypes)throws NoSuchMethodException, SecurityException このClassオブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethodオブジェクトを返します。 nameパラメータは、要求されるメソッドに単純名を指定するStringです。 parameterTypesパラメータは、メソッドの仮パラメータ型を宣言された順序で識別するClassオブジェクトの配列です。
書式
クラス名 オブジェクト名 = new クラス名(メンバー1,メンバー2)
Method 変数名 = オブジェクト名.getClass().getMethod(メソット名);
使用例
package com.arkgame.testinfo; import java.lang.reflect.Method; public class PersonMethod { public static void main(String[] args) throws NoSuchMethodException { // インスタンスperson生成 Person person = new Person("山田 太郎", 2002); //FuncAメソッドを呼ぶ person.FuncA(); //showメソッドを呼ぶ person.show("東京"); // 自クラスとスーバークラスのメソッド Method m1 = person.getClass().getMethod("FuncA"); // 自クラスとスーバークラス Method m2 = person.getClass().getMethod("show", String.class); System.out.println(m1); System.out.println(m2); } }
実行結果
名前: 山田 太郎 都市: 東京 public void com.arkgame.testinfo.Person.FuncA() public void com.arkgame.testinfo.Person.show(java.lang.String)