取得方法
反射最大的的用处(所有的开发中),那么就是针对于方法的操作.在反射机制里面,普通方法可以在保存对象状态的情况下,进行各种操作.所以在反射的操作过程中,必须掌握方法的调用问题.
在Class类里卖弄提供有如下的几个与方法有关的操作:
取得全部方法:
|-本类与继承的方法:
public Method[] getMethods() throws SecurityException
|-本类声明的方法:
public Method[] getDeclaredMethods() throws SecurityException
取得指定方法:
public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException以上的几个个方法中返回的都是
- java.lang.reflect.Method
取得方法名字:
public String getName()
取得方法的参数类型:
public Class<?>[] getParameterTypes()
调用指定的方法(重要):
public Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException
|- 任何方法调用时都必须有实例化对象,而后设置参数;
取得 返回值类型:
public Class<?> getReturnType()
范例:取得全部方法
import java.lang.reflect.Method;
public class Demo5_1 {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> cls=Class.forName("cn.zwb.dome1.Demo5");
Method met[]=cls.getMethods();//取得全部的方法定义
for (int i = 0; i < met.length; i++) {
System.out.println(met[i]);
}
}
}
public class Demo5 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在反射里面最为重要的操作方法只有一个:invoke(),这个是可以直接反射调用方法