Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 再次扩展已由其父接口扩展的接口有什么好处?_Java_Android_Interface - Fatal编程技术网

Java 再次扩展已由其父接口扩展的接口有什么好处?

Java 再次扩展已由其父接口扩展的接口有什么好处?,java,android,interface,Java,Android,Interface,比如,我有以下代码: 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和IBB

比如,我有以下代码:

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

span
接口扩展了
CharSequence
接口

Spannable
接口扩展了
span
接口

Editable
接口扩展了
CharSequence
Spannable
接口

SpannableStringBuilder
类再次实现
CharSequence
Spannable
可编辑
界面


我真的不明白。这样做有什么意义?为什么这么麻烦?

没有技术上的原因。这可能会使维护变得更容易一些-如果Bar扩展了Foo,并且您想要找到实现Foo的所有类,那么您只需查找Foo,而不必查找Foo和Bar。

文档,强调了一个事实,即
MyClass
必须实现
IAAA
,而不必强制执行(人工)阅读代码的读者可以查看
IBBB
了解这一点。

是的,就我个人而言,我几乎总是阅读API文档,但不是每个人都这样做,有时也没有可靠的文档,所以你所说的是有道理的。安卓是一个大团队。我打赌android团队中不是每个人都这么做。团队中并非每个人都是专家。