首页 新闻 搜索 专区 学院

java中接口上的注解和其接口方法上的注解为什么实现类不能继承?

0
悬赏园豆:30 [已解决问题] 解决于 2020-08-08 15:25

定义自定义注解

接口

接口实现类

实现类上获取不到其注解信息,那能在接口上的添加注解的意义何在呢?

myseries的主页 myseries | 初学一级 | 园豆:177
提问于:2020-08-07 11:07
< >
分享
最佳答案
0

只对类继承生效的,接口不算。我感觉也很坑,,,不像c#那样表意明确。

收获园豆:30
blackheart | 老鸟四级 |园豆:3600 | 2020-08-07 11:35
其他回答(2)
0

是不能,不过你可以循环找上去来判断是不是有这个注解

yytxdy | 园豆:1540 (小虾三级) | 2020-08-07 11:48

通过实现类确实可以往上找到接口的注解定义,主要是我疑惑,实现类上不能继承接口上的注解,只能通过回溯到其接口才能找到注解, java这样的实现机制的意图是什么, 面向接口编程? 有时候,把注解定义到接口上,实现类要想实现注解提供的aop代理功能,貌似就不行了吧,还不如把注解放到实际类上面呢。

支持(1) 反对(0) myseries | 园豆:177 (初学一级) | 2020-08-07 13:00
1

几位回答还暂时没有给出满意答案,根据我自己的理解可能存在一下几点考虑:

首先是注解实现的效果结论:

如果是接口类型:
实现类是继承不了接口上的注解信息的

原因可能是:1)接口上的注解信息其实就相当于一个标记,类似于java中的标记接口(Cloneable接口和Serializable接口),想利用这个信息,可以回溯到这个标记接口上来做文章?
2)如果实现类可以继承接口上的注解信息,因为java是支持单继承,多实现接口的,这样,实现类就可以继承多个接口上的注解,是不是就会造成实现类无法知道其本意只想继承其中的某些注解而造成歧义?是的编程变得复杂,可能还有其他方面的考虑什么的?自己瞎几把猜的,可能这涉及到java规范和jvm规范相关的考虑。

myseries | 园豆:177 (初学一级) | 2020-08-08 15:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册