父类(super class)中带有default修饰符的Java反射访问方法

标签 java reflection

是否可以通过Java反射调用父类(super class)中的无修饰符方法?

最佳答案

Method method = getClass().getSuperclass().getDeclaredMethod("doSomething");
method.invoke(this);

如果你有更大的层次结构,你可以使用:

Class current = getClass();
Method method = null;
while (current != Object.class) {
     try {
          method = current.getDeclaredMethod("doSomething");
          break;
     } catch (NoSuchMethodException ex) {
          current = current.getSuperclass();
     }
}
// only needed if the two classes are in different packages
method.setAccessible(true); 
method.invoke(this);

(以上示例是针对名为 doSomething 且没有参数的方法。如果您的方法有参数,则必须将它们的类型作为参数添加到 getDeclaredMethod(...)方法)

关于父类(super class)中带有default修饰符的Java反射访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100412/

相关文章:

c# - Convert.ChangeType() 在可空类型上失败

java - Android 天气应用程序将字符串数组转换为 double 组有困难

Java Calendar.set 未给出正确的结果

java - Android 应用程序中的 http 响应中缺少 cookie

java - 从带注释的字段接收注释值

java - 是否可以通过中间人攻击将代码注入(inject)通过网络传输的 Java 对象?

java - 使用 Google App Engine 进行全文搜索

java - Hibernate 使用 Criteria setMaxResults 给出 SQLGrammarException

go - 在 Golang 中反射(reflect)接口(interface)

java - 如何通过 Java 反射从父类中获取嵌套类