首頁 > Java > java教程 > 為什麼 Java 類別不從介面繼承註解?

為什麼 Java 類別不從介面繼承註解?

Linda Hamilton
發布: 2024-11-04 10:32:01
原創
849 人瀏覽過

Why Don't Java Classes Inherit Annotations from Interfaces?

繼承註解:介面排除

儘管註解類型帶有 Inherited 註解,但 Java 類別不會從實作的介面繼承註解。此行為源自於潛在的繼承衝突。

考慮以下範例:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface Baz { String value(); }

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

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

class Flipp {
    @Baz("flopp")
    public void doStuff() {}
}

class MyClass extends Flipp implements Foo, Bar {}
登入後複製

透過反射存取註解時:

MyClass.class.getMethod("doStuff").getAnnotation(Baz.class).value();
登入後複製

結果變得不明確,因為註解沒有明確的繼承路徑。是「baz」、「phleem」還是「flopp」?

為了避免此類衝突並保持清晰度,Java 有意排除從介面繼承的註解。由於這種繼承限制,放置在介面方法上的註釋通常具有有限的實用性。

以上是為什麼 Java 類別不從介面繼承註解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板