首页 新闻 会员 周边 捐助

接口B继承接口A,但是又不添加新的方法。这样有什么意义吗?

0
悬赏园豆:100 [已解决问题] 解决于 2020-11-08 19:27

public interface A {
void xx();
Stting yy();
}
public interface B extends A{

}

我在其他地方找到了一些类似上面的代码!作为一个 java 初学者,我很困惑!即使我们将来应该做一个扩展,我们仍然可以直接使用接口 A。所以,为什么人们要创建这种代码(无用的接口B)

JackieZhao的主页 JackieZhao | 初学一级 | 园豆:112
提问于:2020-11-08 11:40
< >
分享
最佳答案
1

相当于给派生于b的类型打上了b的标记,如类型过滤时方便使用。

收获园豆:100
花飘水流兮 | 专家六级 |园豆:13617 | 2020-11-08 12:22

为什么要打上B的标记,打个A的标记不行吗,还是说开发者只是想把外部依赖的jar包中的接口A的名字改为自己手写的B,仅仅是作一个使用时的名字的修改

JackieZhao | 园豆:112 (初学一级) | 2020-11-08 14:28

能否给一个例子吗,我没做过项目,不知道这个具体有什么用谢谢大佬了

JackieZhao | 园豆:112 (初学一级) | 2020-11-08 14:32

@JackieZhao:如反射得到所有类型,需要对派生B的Class(或者实例)进行处理,是不是需要一个标记来判断。

花飘水流兮 | 园豆:13617 (专家六级) | 2020-11-08 15:51

@花飘水流兮: 那直接不用接口B,派生A的Class进行处理时,直接用A也可以标记呀!

JackieZhao | 园豆:112 (初学一级) | 2020-11-08 16:09

@JackieZhao: 自己慢慢捋

花飘水流兮 | 园豆:13617 (专家六级) | 2020-11-08 16:15

@花飘水流兮: 大佬,别这样啊,我觉得我永远也捋不清啊,能进一步说话吗_

JackieZhao | 园豆:112 (初学一级) | 2020-11-08 16:24

@花飘水流兮: 我全网包括Stack Overflow上也问了,有个1%的外国答题老哥说without more context to some special scenario, there's generally not a compelling reason to do this.你这里这样一说,我更加懵了啊

JackieZhao | 园豆:112 (初学一级) | 2020-11-08 16:26

@花飘水流兮: 我是在github上看到有人使用别人的jar包,A就是别人的jar包里面的接口,然后B就是他自己加的一个接口,只是 interface B extends interface A后没有做任何添加

JackieZhao | 园豆:112 (初学一级) | 2020-11-08 16:27

@JackieZhao: 比如派生类BB派生于B,这一类BB需要特殊处理(或者实现),你现在拿到了所有派生于A集合List<A>,如果没有派生B的这个标记,你如何得到List<BB> or List<B>?

花飘水流兮 | 园豆:13617 (专家六级) | 2020-11-08 18:08
其他回答(1)
0

你的想法还停留在面向过程的那一套写代码的思想中……把所有的东西都 写在一个类中这个也没错 你后期维护起来你就知道了 。一个类几千行别人碰都 不敢碰,自己写的代码一段时间就忘了……自己也不想碰

把各自的类分门别类 代码复用不光代码重复率低…简洁……有利于后期的维护和接受

agnils | 园豆:205 (菜鸟二级) | 2021-04-19 15:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册