java反射机制,通过类名获取对象,通过方法名和参数调

try {
 //得到类对象
Class c = Class.forName("完整类名");
Object yourObj = c.newInstance();
 //得到方法
Method methlist[] = cls.getDeclaredMethods();
 for (int i = 0; i < methlist.length; i++) {
 Method m = methlist[i];
 }
 //获取到方法对象,假设方法的参数是一个int,method名为setAge
 Method sAge = c.getMethod("setAge", new Class[] {int.class});
 //获得参数Object
 Object[] arguments = new Object[] { new Integer(37)};
 //执行方法
sAge.invoke(yourObj , arguments);
 } catch (Exception e) {
}

getDeclaredMethod*()获取的是类自身声明的所有方法,包含public、protected和private方法。

getMethod*()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。

 

 


测试例子

package com.sf.test;

import java.lang.reflect.Method;

public class RefTest {

    public static void main(String args[]) throws Exception {         Class clazz = Class.forName("com.sf.test.Test");         Object object = clazz.newInstance();         Method refTest = clazz.getDeclaredMethod("refTest");         Method refTest1 = clazz.getDeclaredMethod("refTest1",String.class);         refTest1.invoke(object, "0021212");         refTest.invoke(object);     } }


 

package com.sf.test;

public class Test {   public Test(){      }   public void refTest() {   System.out.println("00000000");  }   public void refTest1(String string) {   System.out.println(string);  } }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值