源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-07-31 16:05 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java反射之方法反射的基本操作方法
本文接上文“[url=http://www.1sucai.cn/article/115348.htm]java反射之获取类的信息方法(推荐)[/url]”,利用反射(invoke)来获取一个类中的方法来执行。 [b]1、定义一个类,包含三个名称相同,参数不同的方法[/b]
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());
  }
}
[b]2、利用方法的反射(invoke)分别获取该类三个方法并执行[/b]
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();
    }
  }
}
[b]3、完整代码[/b]
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());
  }
}
[b]4、执行结果[/b] [img]http://files.jb51.net/file_images/article/201706/2017060508184916.jpg[/img] 以上这篇java反射之方法反射的基本操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部