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

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

Patricia Arquette
發布: 2024-11-04 11:47:30
原創
1006 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板