需要用到的方法
1、取得所有方法,包括继承来的方法 :Class类中的方法
·取得所有方法
public Method[] getMethods()throws SecurityException
·取得一个方法(重要):
public Method getMethod(String name,Class<?>...parameterTypes)throws NoSuchMethodException,SecurityException
2、取得本类定义的方法,不关心继承来的方法:
·取得所有方法:
public Method[] getDeclareMethods()throws SecurityException;
·取得所有方法:
public Method getDeclaredMethods()throws SecurityException;
·取得一个方法:
public Method getDeclaredMethod(String name,Class<?>...parameterTypes)throws NoSuchMethodException,SecurityException;
以上两组方法都是返回java.lang.reflect.Method类的对象
范例
CLass<?> cls = Class.forName("cn.ly.Car");
Method met[] = cls.getDeclaredMethods();
for(int x = 0 ; x<met.length; x ++){
System.out.println(met.[x]);
}
当取得一个类中的方法后,我们就可以取得一个方法的具体信息
·取得修饰符:
public int getModifiers();
·取得返回类型:
public Class<?> getReturnType();
最后献上我们反射中一个最重要昂发,反射调用类方法:
public Object invoke(Object obj,Object..args)throws IllegalAccessException,IllegalArgumentException,InvocationTargetException
在开发中经常能看到InvocationTargetException异常。
在此方法只能够需要传入一个调用此方法的实例化对象,调用时传入所需要的参数。
范例
Class<?> cls = Class.forName("cn.ly.Car");
Object obj = cls.newInstance();
Method setMehod = cls.getMethod("setName",String.class);
setMethod.invoke(obj,"宝马");
Method getMethod = cls.getMethod("getName");
System.out.println(getMethod.invoke(obj));