「Java8」Methodオブジェクトのサンプル

環境
Eclipse 2019
jdk1.8

1.Personクラスの定義

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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);
}
}
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); } }
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オブジェクト

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public Method getMethod(String name,Class<?>... parameterTypes)throws NoSuchMethodException, SecurityException
このClassオブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethodオブジェクトを返します。
nameパラメータは、要求されるメソッドに単純名を指定するStringです。
parameterTypesパラメータは、メソッドの仮パラメータ型を宣言された順序で識別するClassオブジェクトの配列です。
public Method getMethod(String name,Class<?>... parameterTypes)throws NoSuchMethodException, SecurityException このClassオブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethodオブジェクトを返します。 nameパラメータは、要求されるメソッドに単純名を指定するStringです。 parameterTypesパラメータは、メソッドの仮パラメータ型を宣言された順序で識別するClassオブジェクトの配列です。
public Method getMethod(String name,Class<?>... parameterTypes)throws NoSuchMethodException, SecurityException
このClassオブジェクトが表すクラスまたはインタフェースの、指定されたpublicメンバー・メソッドをリフレクトするMethodオブジェクトを返します。
nameパラメータは、要求されるメソッドに単純名を指定するStringです。
parameterTypesパラメータは、メソッドの仮パラメータ型を宣言された順序で識別するClassオブジェクトの配列です。

書式
クラス名 オブジェクト名 = new クラス名(メンバー1,メンバー2)
Method 変数名 = オブジェクト名.getClass().getMethod(メソット名);
使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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);
}
}
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); } }
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);
      }

}

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
名前: 山田 太郎
都市: 東京
public void com.arkgame.testinfo.Person.FuncA()
public void com.arkgame.testinfo.Person.show(java.lang.String)
名前: 山田 太郎 都市: 東京 public void com.arkgame.testinfo.Person.FuncA() public void com.arkgame.testinfo.Person.show(java.lang.String)
名前: 山田 太郎
都市: 東京
public void com.arkgame.testinfo.Person.FuncA()
public void com.arkgame.testinfo.Person.show(java.lang.String)

 

Java

Posted by arkgame