Java中StringBuilder与父类为什么都要实现CharSequence接口?

image.png

// 上图与源码来自于IDEA
// java version 1.8.0_121
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence  // 这里的CharSequence有什么必要吗?是多余的代码还是有什么道理?


abstract class AbstractStringBuilder 
implements Appendable, CharSequence

为什么StringBuilder的父类AbstractStringBuilder已经实现了CharSequence接口,StringBuilder还要继承实现CharSequence接口?

阅读 2.7k
3 个回答

这个问题差不多
类似于ArrayList继承了AbstractList又实现了List,不影响代码逻辑,主要提高可读性,可以直接看出实现了某个接口

如果有一天 AbstractStringBuilder 不实现 CharSequence 接口了呢?

虽然这种可能性太小了,但确实存在可能性。

可能作者想表示这2个都是作为CharSequence的实现类吧,他们都是平级的。而AbstractStringBuilder只是抽象出了StringBuilder的一些方法而已,代码复用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题