인터페이스의 주석 상속 제외: 의도적인 설계 결정
Java에서 클래스는 구현된 인터페이스에서 주석을 상속하지 않습니다. 이 제외 사항은 상속된 주석에 대한 Java 문서에 명시적으로 언급되어 있습니다. 인터페이스의 주석은 효과가 없습니다.
이 결정의 이유는 상속 충돌과 모호성을 방지하기 위한 것입니다. 다음 예를 고려하십시오.
<code class="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() {} } public class MyClass extends Flipp implements Foo, Bar {}</code>
인터페이스가 주석을 상속할 수 있는 경우 MyClass의 doStuff 메소드는 두 개의 충돌하는 주석인 Foo의 @Baz("baz")와 Foo의 @Baz("phleem")를 상속합니다. 술집. 이로 인해 시스템에 모호함이 생겨 어떤 주석을 적용해야 하는지 불분명해집니다.
게다가 구현된 인터페이스에 주석을 추가하면 다중 상속 문제가 발생할 수 있습니다. Java는 클래스 수준에서 다중 상속을 지원하지 않으므로 인터페이스의 주석을 상속하도록 허용하면 다중 상속 형식이 효과적으로 생성됩니다. 이는 훨씬 더 복잡한 시나리오와 잠재적인 충돌로 이어질 수 있습니다.
따라서 Java 프로그래밍 언어 구현 시 명확성을 유지하고 충돌을 피하며 잠재적인 문제를 방지하기 위해 인터페이스에서 주석 상속을 제외하기로 결정했습니다.
위 내용은 Java에서는 인터페이스가 주석을 상속하는 것을 허용하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!