我们的库包含两种方法:doXForAll
和doXForEach
:
default List<Object> doXForAll(Object input1) {
return Collections.singletonList(doXForEach(input1));
}
default Object doXForEach(Object input1) {
return doX(input1); // Some kind of default behaviour over the input
}
我们鼓励客户使用自己的实现重写这些默认方法。我们需要保持谨慎,不要进行任何会破坏现有功能的更改。
我们想在上述两种方法中增加对额外参数Object input2
的支持。您如何建议在不要求我们的客户更新其实现的情况下进行此操作?
default List<Object> doXForAll(Object input1, Object input2) {
return doXForAll(input1);
}
与此有关的问题是:
doXForEach
方法答案 0 :(得分:1)
对于We're missing a doXForEach method with the additional parameter
点,
是什么阻止您创建这个?
对于We are calling methods we've just deprecated (which feels wrong)
,
您不应该调用不推荐使用的方法。
例如只需创建除现有内容外的其他内容即可
default List<Object> doXForAll(Object input1, Object input2) {
return Collections.singletonList(doXForEach(input1, input2));
}
default Object doXForEach(Object input1, Object input2) {
return doX(input1, input2);
}
答案 1 :(得分:1)
您正在寻找支持多达16种可能方案的前景。以下四种情况可以分别独立发生,因此2 ^ 4 = 16。
doXForAll(Object input1)
doXForEach(Object input1)
doXForAll(Object input1, Object input2)
doXForEach(Object input1, Object input2)
如果实施当前的解决方案,那么您将遇到以下不幸的结果:
doXForAll(Object input1)
和doXForAll(Object input1, Object input2)
doXForAll(Object input1, Object input2)
doXForAll(Object input1)
称为doXForAll(Object input1, Object input2)
。为防止此类意外,最好将新方法与旧方法不同,并分别覆盖它们。