java 反射获取方法(3)

来源:互联网 发布:ghostscript知乎 编辑:程序博客网 时间:2024/06/06 00:31

若通过Method的invoke()方法调用方法,而访问权限不足,则可以先使该方法变为可访问的调用一下方法:  method.setAccessible(true);

例子:

public void testGetPrivateMethod() throws  Exception{try {Object obj = Class.forName("cn.reflection.Student").newInstance();Method cla = Class.forName("cn.reflection.Student").getDeclaredMethod("method", Integer.class);//若需要通过反射执行私有方法可执行以下方法 cla.setAccessible(true);System.out.println(cla.invoke(obj,1));} catch (ClassNotFoundException e) {e.printStackTrace();}}

  获取当前类的父类 直接调用Class对象的getSuperClass()方法

例子:

public void testGetSuperClass() throws ClassNotFoundException{String className = "cn.Person";Class cla = Class.forName(className);Class supercla = cla.getSuperclass();System.out.println(supercla);}
例子: 以下一个例子是获取指定的方法,该方法可能是父类中的方法
public Method getMethod(Class cla,String name,Class...args){for(;cla != Object.class;cla = cla.getSuperclass()){//这里的中断条件利用了异常处理,如果获取不到方法就会抛异常,但我们暂时不处理他//使得程序处理下一次循环,直到能正确找到一个方法返回try {Method method = cla.getDeclaredMethod(name, args);return method;} catch (Exception e) {}}return null;}


0 0
原创粉丝点击