gpt4 book ai didi

Java JAR 方法覆盖

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:03 24 4
gpt4 key购买 nike

所以我是 Java 的新手,真的很想在这里得到一些建议。

我有一个 jar XYZ.jar,我已将其添加到我的类路径中。这个 XYZ.jar 有 4 个类,即 A,B,C,DCLASS D 中有一个方法 private void METHOD P()CLASSES A,B,C 调用。

现在我的项目中有一个类Main.java,它有一个方法METHOD R()。

现在我想用 Main.java 中的 METHOD R() 覆盖 private void METHOD P()。我可以做的一件事是,我可以使用 CLASS D 扩展我的 Main class。但是,我将不得不修改 CLASSES A,B,C 中的方法名称,我不想这样做,因为上述类在 jar 中。

所以,我想知道的是,是否有一种方法可以覆盖存在于 jar 中的类的私有(private)方法而不对调用该方法的其余类,存在于 jar 中

最佳答案

假设您的类 ABC 期望类 D 作为它们的构造参数:

class Main extends D {
public static void Main(String[] args) {
Main main = new Main();
A a = new A(main);
B b = new B(main);
C c = new C(main);
}

public void R() { ... }

public void P() {
R();
}
}

但这只适用于 D 和它的方法 P() 不是最终的,并且你的其他类没有实例化 D 自己.

另一种昂贵的方法是使用 PowerMockito 模拟您的方法 D.P() 以使用您的 Main.R()。但这不应该用于生产代码

关于Java JAR 方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55136216/

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