gpt4 book ai didi

java - 重写方法的内部行为

转载 作者:行者123 更新时间:2023-12-01 23:48:44 25 4
gpt4 key购买 nike

有一个类A实现了方法doBlah。我有一个类 B,它是 A 的子类,并且有一个 @Override 方法 doBlah。在 B.doBlah 中执行一些简单操作后,我调用 A.doBlah

A.doBlah 调用静态方法C.aStaticMethod

A 和 C 是我无法修改的外部库的一部分。

我希望有一个由 A.doBlah 调用的静态方法 CC.aStaticMethod 来代替 C.aStaticMethod。使用任何设计模式/黑客可以实现这一点吗?

[编辑]我确实有 A 的源代码,我可以将其中的文件包含到我的代码中,并根据需要进行修改等。但是,我无法修改 A 包。

最佳答案

如果您无法修改AC,并直接调用A,那么答案是 .

另一方面,如果您不需要直接调用A.doBlah,则可以覆盖它的行为(前提是该方法不是最终),在您自己的类中,并让它调用CC.aStaticMethod

如果您确实有权访问源代码,您可以进行非常非常丑陋的黑客攻击:

在与原始包完全相同的包中创建一个类A,并修改方法doBlah以调用您需要的内容。

请记住,这有很多缺点,即,如果 A 属于外部库,您无法知道对该库的更新是否会破坏您的代码,因为您将运行旧版本的 A。这基本上是说这种方法很快就会变成维护噩梦。

关于java - 重写方法的内部行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16613914/

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