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

// 	统一调用成员方法
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再直接调用所需方法有本质的不同。

发布了5 篇原创文章 · 获赞 0 · 访问量 41

猜你喜欢

转载自blog.csdn.net/hello_momo/article/details/105370812
今日推荐