java反射---获取类的方法



/**
 *
 */
package cn.thcic;

import java.lang.reflect.Method;

/**
 * java反射---获取类的方法
 * <p>
 *
 * </p>
 * by Zhiwang Zhang on 2014年7月21日
 */
public class Test109 {
 public static void main(String[] args) {
  // 通过Class类来获取类的方法,共有以下四种方法:
  // 1、public Method[] getMethods(),获取所有的共有方法的集合
  Class classInfo = Test109.class;
  Method[] methods = classInfo.getMethods();
  System.out.println("public方法共有:" + methods.length);
  if (methods != null) {
   for (Method m : methods) {
    System.out.println(m.toString());
   }
  }
  // 2、public Method[] getDeclaredMethods(),获取所有的方法,不包括继承的方法
  Method[] methodsSec = classInfo.getDeclaredMethods();
  System.out.println("Test109的所有方法共有:" + methodsSec.length);
  if (methodsSec != null) {
   for (Method m : methodsSec) {
    System.out.println(m.toString());
   }
  }
  // 3、public Method getMethod(String name,Class<?>...
  // parameterTypes),获取指定公有方法 参数1:方法名 参数2:参数类型集合
  try {
   Method methodForRun = classInfo.getMethod("run", String.class,
     Long.class);
   // invoke(Object obj, Object... args),对带有指定参数的指定对象调用由此
   // Method对象表示的基础方法。
   Test109 test = (Test109) classInfo.newInstance();
   methodForRun.invoke(test, "zzw", 1L);
  } catch (Exception e) {
   e.printStackTrace();
  }

  // 4、public Method getDeclaredMethod(String name,Class<?>...
  // parameterTypes) 获取任意指定方法
  try {
   Method methodForSleep = classInfo.getDeclaredMethod("sleep",
     String.class);
   Test109 testSec = (Test109) classInfo.newInstance();
   int i = (int) methodForSleep.invoke(testSec, "lwz");
   System.out.println(i);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public void run(String name, Long age) {
  System.out.println("公有run()方法...");
 }

 private int sleep(String name) {
  System.out.println("私有sleep()方法...");
  return 1;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值