gpt4 book ai didi

java - 如何在通知中调用父类(super class)方法?

转载 作者:搜寻专家 更新时间:2023-11-01 03:36:25 26 4
gpt4 key购买 nike

我正在做一个旨在在不直接更改源代码的情况下在代码库中引入修改的项目,这些更改已经实现,我正在用 AspectJ 重写代码

到目前为止,我设法使用 AspectJ 实现了所有更改。但我不知道如何实现它:

  • 有一个名为 beforeCadastrarAndValidate () 的方法,它被子类覆盖了。在此方法的末尾插入了以下行:super.beforeCadastrarAndValidate ()
  • 这行代码从父类(super class)中调用方法。我可以捕捉到这个方法的执行,但是我不知道如何调用父类(super class)的方法。我已经搜索过了,我知道在建议中不可能称呼“ super ”。我也尝试过使用反射,但我还没有找到解决方案。

我有办法做到这一点吗?

谢谢!

最佳答案

您可以使用反射从父类(super class)中调用它。

import java.lang.reflect.Method;

class Person {
public void greet() {
System.out.println("Person's greet");
}
}

class Employee extends Person {
public void greet() {
System.out.println("Employee's greet");
}
}

class Main {
public static void main(String[] args)
throws Exception {
// get the method object from Person class.
Method g = Person.class.getMethod("greet",
new Class[0]);

Employee e = new Employee();
// When "g" is invoked on an "Employee" object,
// the "Employee.greet" method is called.
g.invoke(e, null);
}
}

引用:https://blogs.oracle.com/sundararajan/entry/calling_overriden_superclass_method_on

关于java - 如何在通知中调用父类(super class)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30282003/

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