Class类中getMethods() 与getDeclaredMethods() 方法的区别
1、getMethods(),该方法是获取本类以及父类或者父接口中所有的公共方法(public修饰符修饰的)
2、getDeclaredMethods(),该方法是获取本类中的所有方法,包括私有的(private、protected、默认以及public)的方法。
method.invoke()
method.invoke(Object obj,Object args[])的作用就是调用method类代表的方法,其中obj是对象名,args是传入method方法的参数
举个例子:如果接口中没有close方法,但是实现类中提供了close,那么就可以用反射来处理,调用实现类的close方法
invoke()方法接收的参数必须为对象,如果参数为基本类型数据,必须转换为相应的包装类型的对象。
invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回.
有四种获得method对象的方法,返回结果是method对象,或者说是 方法的全限定名:
first、getMethods(): 获得类的public类型的方法。
second、getMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型。
third、 getDeclaredMethods(): 获取类中所有的方法(public、protected、default、private)。
fourth、getDeclaredMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型。
// 反射出对应的自定义方法类
Class<?> cls = Class.forName(“类的路劲” + className);
// 通过spring容器获取自定义方法类的实例
Object bean = SpringContextHolder.getBean(cls);

本文详细介绍了Java反射机制中Class类的getMethods()与getDeclaredMethods()方法的区别,并解释了method.invoke()方法的使用方式及注意事项。

被折叠的 条评论
为什么被折叠?



