「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)

 

Java

Posted by arkgame