gpt4 book ai didi

java - 具有 UnsupportedOperationException 实现的默认方法

转载 作者:行者123 更新时间:2023-12-02 11:40:19 25 4
gpt4 key购买 nike

我需要修复项目中的一个错误,但事实证明,根本原因是由于设计问题而导致接口(interface)的所有实现中出现了许多变通办法。我想重构该接口(interface),但我现在不能这样做,因为我没有时间更改所有实现。所以我的想法是在这个接口(interface)中添加一个默认方法,并仅在一个实现中实现它(部分修复设计问题),然后在下一个冲刺中进行大重构。这次重构是为了将这个接口(interface)中的所有方法替换为更简单、更有意义的方法。这些新方法之一是问题所涉及的默认方法。

但实际上这个方法不需要实现,它只是一个临时解决方案,方向正确。

实现抛出 UnsupportedOperationException 的默认方法(当然是在接口(interface)中)是否有意义?

最佳答案

默认方法背后的整个想法是向接口(interface)添加方法,而不会自动破坏现有的实现。看起来这就是您打算做的事情,所以就目前而言这是有道理的。

但您在评论中评论道:

I'm gonna override it in the implementation class that I need to fix the bug and then call this new method instead of the previous one which doesn't make sense.

如果您要在界面的任何实例上调用新方法,那么您需要确信它将执行适当的操作。如果您建议的默认实现有可能提供此类调用,而该默认实现总是抛出UnsupportedOperationException(并且假设这是不可取的),那么这可能无法证明这种信心是合理的。

如果您确实有理由相信新方法只会在一个特定实现类的实例上调用,那么要么您使用接口(interface)的方式非常奇怪,要么您实际上不需要更改根本没有界面。也就是说,如果您知道正在使用什么实现,则可以将新方法单独添加到该类,而无需更改接口(interface)。

关于java - 具有 UnsupportedOperationException 实现的默认方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48627825/

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