首页 > Java > java教程 > 为什么 Java 接口不继承注解?

为什么 Java 接口不继承注解?

Patricia Arquette
发布: 2024-11-04 11:47:30
原创
997 人浏览过

Why Don't Java Interfaces Inherit Annotations?

Java 接口中的注解继承

注解继承,由 @Inherited 注解表示,允许注解从超类传播到子类。然而,此规则的一个值得注意的例外是,已实现接口上的注释不会由实现类继承。

根据 @Inherited 的文档,“此元注释仅导致注释从超类继承;注释对实现的接口没有影响。”

非继承背后的原因

此设计决策可以防止类使用相同冲突注释实现多个接口的情况下发生继承冲突。考虑以下示例:

<code class="java">@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) @Inherited
public @interface Baz { String value(); }

public interface Foo{
    @Baz("baz") void doStuff();
}

public interface Bar{
    @Baz("phleem") void doStuff();
}

public class MyClass implements Foo, Bar{}</code>
登录后复制

如果注释是从接口继承的,则哪个 @Baz 值将与 MyClass.doStuff() 方法关联? “baz”,“phleem”,还是其他什么?

实际影响

接口上的注释继承通常被认为是不常见和不切实际的,因为潜在的冲突和当多个接口指定冲突的注释时,很难确定正确的注释。建议依赖超类上的注释或在依赖注入框架中使用替代机制进行方法拦截。

以上是为什么 Java 接口不继承注解?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板