修改TaxCalculator方法实现后,是否需重新编译依赖的Main类?
关于Java类修改后编译需求的解答
不需要重新编译Main类,只需要重新编译TaxCalculator类,具体原因如下:
- Java编译依赖的是类的方法签名(包含方法名、参数类型/数量、返回值类型),而非方法内部的实现细节。Main类在编译阶段,只需要确认TaxCalculator类存在一个
double calculateTax(double)的方法,完全不关心这个方法里是用0.3还是0.4去计算。 - 你这次修改的只是calculateTax方法的内部实现逻辑,方法签名没有任何变化。这种情况下,已经编译好的
Main.class完全可以和重新编译后的TaxCalculator.class配合运行,不需要重新编译Main类。 - 你之前听到的“紧耦合导致依赖类需重新编译”,针对的是类的公共API发生变更的场景——比如给calculateTax方法新增参数、修改返回值类型、删除方法等。这类变更会打破依赖类(比如Main)原本的调用逻辑,这时候才需要重新编译依赖类。
实际运行逻辑参考:
- 初始编译后得到
TaxCalculator.class和Main.class,Main运行时会调用TaxCalculator里的calculateTax方法。 - 修改calculateTax的实现后,重新编译TaxCalculator得到新的
TaxCalculator.class,替换掉旧的文件。 - 直接运行已有的
Main.class,程序会自动调用新的方法实现,输出结果从30000变为40000。
内容的提问来源于stack exchange,提问作者Henrique Rodrigues
相关产品推荐
相关产品推荐

