Java反射封装方法类,动态的执行getMethod(“MethodName”,Class[]paras);

  • Post author:
  • Post category:java


下面是反射封装的代码,废话不多说直接看代码

package com.rongtai.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {

	public static void main(String[] args) throws Exception {
		test();
	}

	public static void test() throws Exception {

		A impl = new A();
		Class<?> clazz = impl.getClass();

		Method m = clazz.getMethod("print", getPeremeterClass(impl, "print"));
		// 调用你要指定的方法 应该知道 参数的类型和数量
		m.invoke(impl, "Hello", "  world");
	}

	public static Class<?>[] getPeremeterClass(Object obj, String methodName)
			throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {

		Class<?> clazz = obj.getClass();

		Method[] method = clazz.getDeclaredMethods();

		for (Method m : method) {

			System.out.println(m.getName());
			/**
			 * 跳过非指定的方法
			 */
			if (!m.getName().equals(methodName)) {
				continue;
			}
			// 获取参数类型的数组 里面有参数的个数 和参数的类型
			Class<?>[] peremeters = m.getParameterTypes();

			return peremeters;
		}
		return null;

	}

}

class A {

	public void show(Test t) {
		System.out.println("success");
	}

	public void print(String s1, String s2) {
		System.out.println(s1 + s2);
	}

	public void work(String[] arr) {
		System.out.println(arr);
	}

}



版权声明:本文为qq_34183030原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。