gpt4 book ai didi

java - 添加方法/修改 jar 的类

转载 作者:行者123 更新时间:2023-12-01 19:13:30 24 4
gpt4 key购买 nike

非常愚蠢的问题,我正在做一个项目,我想不出任何解决方法我已经在 open jar 中实现了新功能(我们称之为转换器),我想修改以下方法之一:ExchangeToEuro、ExchangeToDollar、CheckCurrency。

我的问题是:是否有任何机制可以让我在不修改 jar 的情况下向类添加功能(修改这些方法,甚至向此类添加方法)(不修改 jar 中存在的类)?

我考虑过一个类装饰器,但这行不通,因为我需要修改 jar 本身。

最佳答案

您可以扩展 Converter.jar 中的类(只要它们不是最终的),并覆盖其中包含的方法(只要它们可见且不是最终的)。假设 Converter.jar 有一个这样的类:

public class ExchangeToDollar {
public BigDecimal exchangeEuroToDollar(final BigDecimal euroValue) {
...method implementation....
}
}

您可以像这样扩展和覆盖:

public class MyClass extends ExchangeToDollar {
@Override
public BigDecimal exchangeEuroToDollar(final BigDecimal euroValue) {
...your implementation....
}
}

MyClass.exchangeEuroToDollar(BigDecimal) 方法会覆盖 Converter.jar 中 ExchangeToDollar 类中包含的 exchangeEuroToDollar(BigDecimal) 实现,这意味着当您在 MyClass 实例上调用该方法时,您的实现将被执行。

这种类型实现的缺点是,任何您无法控制的使用 ExchangeToDollar 的代码都将无法使用您重写的实现,除非您可以传递 MyClass 实例代替。

关于java - 添加方法/修改 jar 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636421/

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