gpt4 book ai didi

Java反射,从父类(super class)调用方法?

转载 作者:行者123 更新时间:2023-12-01 16:55:37 24 4
gpt4 key购买 nike

我看过很多例子,我知道讨论的是什么。我做的一切都是正确的,但我收到一个错误。这是为什么?我做错了什么?

Class superClass = rootObject.getSuperclass();
Method addErrorMethod = superClass.getDeclaredMethod("addErrorMessage", ErrorType.class, String.class, String.class, String.class);
_log.info(addErrorMethod.getName());
addErrorMethod.invoke(superClass, ErrorType.FIELD, propertyName, message, "");

我得到了方法,但是当你调用调用者时。我收到以下错误。

 java.lang.IllegalArgumentException: object is not an instance of declaring class

谢谢。

最佳答案

当您调用 Method.invoke 时,第一个参数必须是:

  • 当方法是包含该方法的类的非静态实例时
  • 当方法是静态null或类本身时。

由于您传递了类本身并且出现了错误,因此表明您尝试调用的方法不是静态的,因此您应该像这样调用它

addErrorMethod.invoke(rootObject, ErrorType.FIELD, propertyName, message, "");
// ^^^^^^^^^^- assuming it is instance on which we want to invoke this method

关于Java反射,从父类(super class)调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33264489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com