java反射 调用无参数构造函数执行成员方法

本文深入探讨了Java反射机制的应用,展示了如何通过类名字符串、方法名字符串和参数值调用方法,实现动态创建实例和执行方法的过程。反射机制允许将类名和方法名作为变量,直接操作这些变量以产生实例和运行方法,区别于传统的new实例和直接调用方法的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 	统一调用成员方法
public class D {
	// 构造函数1
	public void func1() {
		System.out.println("this is func1");
	}
	// 构造函数2
	public void func2(Integer m) {
		System.out.println("this is func2:" + m);
	}
	// 构造函数3
	public void func3(String str, Integer m) {
		System.out.println("this is func3:" + str + m);
	}

	static boolean process(String className, String funcName, Object[] para) throws Exception {

		// 获取类信息对象
		Class classInfo = Class.forName(className);
		// 形成函数参数序列
		Class c[] = new Class[para.length];
		for (int i = 0; i < para.length; i++) {
			c[i] = para[i].getClass();
		}
		// 调用无参数构造函数
		Object obj = classInfo.getConstructor().newInstance();
		// 获得函数方法信息
		Method method = classInfo.getMethod(funcName, c);
		// 执行该方法
		method.invoke(obj, para);
		return true;
	}

	// 第二种方式
	// 通过class类的有参getConstructor方法,来获得对应的一个构造方法信息,然后调用newInstance方法,完成该实例的创建过程。
	public static void main(String[] args) throws Exception {

		Boolean flg3 = process("com.reflect.testPackage1.D", "func3", new Object[] { "strstrstrstr", 250 });
		Boolean flg2 = process("com.reflect.testPackage1.D", "func2", new Object[] { 250 });
		Boolean flg1 = process("com.reflect.testPackage1.D", "func1", new Object[] {});

		System.out.println("process do success");
	}
}

只要知道类名称字符串,方法名称字符串,方法参数值,就可以运用反射机制调用该方法。
通过该段程序,可以看到反射机制的特点是:可以把类名,方法名作为字符串变量,直接对这两个字符串变量进行操作,就能产生实例及相应的运行方法,这与普通的先new再直接调用所需方法有本质的不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值