欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java反射之方法反射的基本操作方法

程序员文章站 2023-12-19 14:11:04
本文接上文“”,利用反射(invoke)来获取一个类中的方法来执行。 1、定义一个类,包含三个名称相同,参数不同的方法 class a{ public v...

本文接上文“”,利用反射(invoke)来获取一个类中的方法来执行。

1、定义一个类,包含三个名称相同,参数不同的方法

class a{
  public void print(){
    system.out.println("hello,world");
  }

  public void print(int a,int b){
    system.out.println(a+b);
  }
  public void print(string a,string b){
    system.out.println(a.touppercase()+","+b.tolowercase());
  }
}

2、利用方法的反射(invoke)分别获取该类三个方法并执行

public class test {
  public static void main(string[] args) {
    /**
     * 获取print(int,int)方法
     * 1、获取类的类类型
     */
    a a1 = new a();
    class clazz = a1.getclass();
    /**
     * 2、获取方法(名称、参数列表)
     * getmethod()获取的是public方法
     * getdeclaredmethod()获取的是自己声明的方法
     */
    try {
//      method m = clazz.getmethod("print",new class[]{int.class,int.class});
      method m = clazz.getmethod("print", int.class, int.class);
      //方法的反射操作,用m对象进行方法调用,a1.print完全相同
      //方法没有返回值返回null,有返回值返回具体的返回值
//      object obj = m.invoke(a1,new object[]{10,20});
      object obj = m.invoke(a1,10,20);

      system.out.println("================================================");

      method m2 = clazz.getmethod("print", string.class, string.class);
      m2.invoke(a1,"aaa","bbb");

      system.out.println("================================================");

      method m3 = clazz.getmethod("print");
      m3.invoke(a1);
    } catch (exception e) {
      e.printstacktrace();
    }
  }
}

3、完整代码

package com.format.test;

import java.lang.reflect.method;

/**
 * created by format on 2017/6/3.
 */
public class test {
  public static void main(string[] args) {
    /**
     * 获取print(int,int)方法
     * 1、获取类的类类型
     */
    a a1 = new a();
    class clazz = a1.getclass();
    /**
     * 2、获取方法(名称、参数列表)
     * getmethod()获取的是public方法
     * getdeclaredmethod()获取的是自己声明的方法
     */
    try {
//      method m = clazz.getmethod("print",new class[]{int.class,int.class});
      method m = clazz.getmethod("print", int.class, int.class);
      //方法的反射操作,用m对象进行方法调用,a1.print完全相同
      //方法没有返回值返回null,有返回值返回具体的返回值
//      object obj = m.invoke(a1,new object[]{10,20});
      object obj = m.invoke(a1,10,20);

      system.out.println("================================================");

      method m2 = clazz.getmethod("print", string.class, string.class);
      m2.invoke(a1,"aaa","bbb");

      system.out.println("================================================");

      method m3 = clazz.getmethod("print");
      m3.invoke(a1);
    } catch (exception e) {
      e.printstacktrace();
    }
  }
}

class a{
  public void print(){
    system.out.println("hello,world");
  }

  public void print(int a,int b){
    system.out.println(a+b);
  }
  public void print(string a,string b){
    system.out.println(a.touppercase()+","+b.tolowercase());
  }
}

4、执行结果

java反射之方法反射的基本操作方法

以上这篇java反射之方法反射的基本操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

上一篇:

下一篇: