【发布时间】:2018-12-07 00:40:10
【问题描述】:
说,我有以下代码:
interface IAAA {
void aaa();
}
interface IBBB extends IAAA {
void bbb();
}
class MyClass implements IAAA, IBBB {
public void bbb() { }
public void aaa() { }
}
在MyClass 中实现IAAA 有什么好处吗?
如您所见,IAAA 已经被IBBB 扩展,MyClass 正在实现IAAA 和IBBB。从MyClass 中删除IAAA 似乎不会影响任何事情。
我问这个愚蠢的问题的原因是,
我经常在 Android 开源项目 中看到这种模式,有时甚至在标准的 Java API 中,例如 ArrayList。
我想说的一个例子是SpannableStringBuilder。
Spanned 接口扩展了CharSequence 接口。
Spannable 接口扩展了Spanned 接口。
Editable 接口扩展了CharSequence 和Spannable 接口。
SpannableStringBuilder 类实现了CharSequence、Spannable、Editable 接口 AGAIN。
我真的不明白。这样做有什么意义?何必呢?
【问题讨论】:
-
Android 是一个大团队。我敢打赌,不是 android 团队中的每个人都这样做。并非这个团队中的每个人都是专家。