写一个类ReflectUtil类, 类中写一个静态方法Object methodInvoker(String classMethd) 此方法为无参方法如, 我们传入的实参字符串为:classMeth

package com.fpy.socket;
import java.lang.reflect.Method;

public class ReflectUtil {

	public static Object methodInvoker(String classMethd)
			throws Exception {
		// 获取最后一个"."出现的下标
		int lastDot = classMethd.lastIndexOf(".");
		// 获取子字符串从第0下标到最后一个"."出现的下标,这个字符串即为类的全限定名称
		String className = classMethd.substring(0, lastDot);
		// 获取子字符串,为方法的名称
		String methodName = classMethd.substring(lastDot + 1, classMethd.length() - 2);
		// 根据类名获取Class对象
		Class clazz = Class.forName(className);
		Method method = null;
		Class tmp = clazz;
		// 判断次方法是否存在
		while (tmp != null) {
			try {
				// 若存在,获取方法对象,以防是私有方法,使用getDeclaredMethod方法获取
				method = tmp.getDeclaredMethod(methodName);
				break;
			} catch (NoSuchMethodException e) {
				// 若不存在,在父类中获取此方法
				tmp = tmp.getSuperclass();
			}
		}
		Object object = clazz.newInstance();
		// 根据Class对象创建对象
		// 突破私有方法的禁锢性
		method.setAccessible(true);
		return method.invoke(object);
	}

	public static void main(String[] args) {
		try {
			Object object = methodInvoker("java.lang.String.length()");
			System.out.println(object);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值