反射机制调用指定方法

本文通过一个具体的Java程序示例,详细介绍了如何利用反射机制获取类的信息,并调用类中的方法和构造器。包括如何获取类的实例、调用带参数的方法、使用无参构造器创建对象、设置和获取对象属性等。

public class Test1 {
public static void main(String[] args) {
try {
Class clazz = Class.forName(“Reflect.Student”);
//通过包名.类名的字符串,调用class. forName方法获取指定类的class实例
/**
* 注意:下面不论是反射调用setInfo还是test方法
* 都调用的obj对象的方法,obj对象实际上就是student对象
*/
Method m = clazz.getMethod(“setInfo”, String.class, String.class);
//得到名称叫setInfo, 参数是string, String的方法
Constructor con = clazz.getConstructor(); //获取无参构造
Object obj = con.newInstance();//使用无参构造创建对象
m.invoke(obj,“张三”,“第一中学”);
//参数1是需要实例化的对象,后面的参数是调用当前的方法实际参数
Method m1 = clazz.getDeclaredMethod(“test”, String.class);
//获取方法名为test,参数为1个string类型的所有方法
m1.setAccessible(true); //解除私有的封装,下面可以强制调用私有的方法|
m1.invoke(obj,“李四”);
Method m2 = clazz.getMethod(“setInfo”, int.class); //调用一个重载方法
m2.invoke(obj,18);
Method m3 = clazz.getMethod(“getSchool”); // 这是获取方法名为getSchoo1并且没有参数的方法
String school = (String)m3.invoke(obj);
//调用一个有返回值的方法,但是没有参数的方法
System.out.println(school);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();

    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值