通过反射获取成员方法
方法 |
说明 |
getMethod(String name, Class<?>...parameterTypes) |
返回一个 方法对象,它反映此表示的类或接口的指定公共成员方法 类对象。 |
getMethods() |
返回包含一个数组 方法对象反射由此表示的类或接口的所有公共方法 类对象,包括那些由类或接口和那些从超类和超接口继承的方法。 |
getDeclaredMethod(String name, 类<?>... parameterTypes) |
返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 类对象。 |
getDeclaredMethods() |
返回包含一个数组 方法对象反射的类或接口的所有声明的方法,通过此表示 类对象,包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法。 |
通过反射实例化的对象调用反射获得的方法
方法 |
说明 |
invoke(Object obj, Object... args) |
在具有指定参数的方法对象上调用此方法对象表示的底层方法。 |
public class Demo {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
//通过反射获得构造方法对象
Class<?> aClass = Class.forName("commmm.Student");
//实例化
Constructor<?> declaredConstructor = aClass.getDeclaredConstructor();
Object o = declaredConstructor.newInstance();
//获得方法对象
Method method = aClass.getMethod("method1");
method.invoke(o);
Method method2 = aClass.getMethod("method2", String.class);
method2.invoke(o,"hello");
}
}