为什么StringBuilder是最终的 - 与所有最终方法相比?

时间:2011-09-16 17:51:24

标签: java

这是我对earlier question on StringBuilder best-practices的答案(“一厢情愿”)的动机。如果StringBuilder是可扩展的,那么特定于域的子类可以扩展其流畅的接口,这将收紧StringBuilder传递给许多构建更大字符串部分的方法的代码。

我正在考虑向番石榴人提出建议 - 也许是StringBuilder委托。

与仅使用最终方法相比,它为StringBuilder提供了什么额外的目的,而不是最终方法?

1 个答案:

答案 0 :(得分:9)

如果所有方法都是final,则无法修改StringBuilder的当前行为。它的子类必须添加未连接的行为(本质上是糟糕的设计)或使用旧的新功能,如便利方法。如果你想做后者,最好有一个提供相关功能但包含StringBuilder而不是扩展它的类。正如约书亚布洛赫所说,“宁愿遏制继承”。简而言之,如果所有方法都是最终的,那么没有充分的理由来扩展课程,你也可以将它作为最终方法。