2014-11-29 2 views
1

이 @interface 요소는 Java에서 주석을 정의하는 데 사용됩니다.
내가 주석을 알고 자바에 도입 된 5자바에서 @interface가 도입 된시기는 언제입니까?

내 질문 :

1) 어떻게 요소 (공식적으로)라고하며,
이가 인식되었을 때부터 컴파일러 때 도입되었다 즉?
주석 또는 메타 주석 자체입니까?

2) 자바 (8) 이전에 (예를 들어, 자바 5 또는 6) 방법/다른 요소가 있었다
주석을 정의하기 위해 사용하거나 항상 언어로 자신의 등장 이후로 그
방법을 정의했다?

+0

글쎄, 당신은'public @interface Whatever'을 사용하여 어노테이션을 선언 했으므로 어노테이션이 나타난 것과 동시에 나타났습니다. – fge

+0

@fge 그게 제가 묻는 것입니다. 어쩌면 과거에는 주석을 정의하는 데 다른 것이 사용 되었습니까? 그래서 "아니오,'@ 인터페이스는 항상 주석을 정의하는데 사용되었습니다." –

+0

음, 1.5 이전에는 주석이 없었습니다. 나는 노력과 1.4의'공공 @interface Whatever' 이하 ...이 시도하지 않은 컴파일 오류는 추측) – fge

답변

3

이 요소는 (공식적으로) 어떻게 호출되며 컴파일러에서 언제이를 인식합니까?

annotation type declaration. 이것은 Java 5에 추가되었습니다.

주석 또는 메타 주석 자체입니까?

아니, @interface는 그것은 @ 앞에 바로 키워드 interface의, 그 자체로 주석이 아닙니다. 그것은 메타 주석이 아닙니다. 메타 - 주석은 주석 유형 선언에 사용될 수있는 주석이다. JDK 자체에는 여러 가지가 있습니다 (예 : @RetentionPolicy).

자바 8 이전

(예를 들어, 자바 5 또는 6) 정의 주석

호에 사용이 된 다른 요소/방법

또는 그들은 그들은 항상 것으로 정의했다 언어로 출현 한 이후로 언제 까지나?

예.

주석이 Java 5에 추가되었으며 @interface은 항상 주석을 만드는 방법이었습니다. 어노테이션을 생성하는 다른 메커니즘이 과거에는 없었습니다.

이유가 @interface이고 annotation과 같은 새 키워드가 아닙니다. 이전 버전과의 호환성을 위해 작성되었습니다. 새 키워드를 추가하면 이전 버전에 작성된 프로그램이 예를 들어 변수 이름으로 키워드 이름을 사용했을 수 있으므로 이전 버전과의 호환성 문제가 즉시 발생합니다. 이러한 프로그램은 새 버전에서 더 이상 컴파일되지 않습니다. 따라서 Java에 새로운 기능을 추가하고자 할 때, Oracle은 새로운 기능을 생성하는 대신 기존 키워드를 재사용하는 것을 선호합니다.

즉, enumassert (Java 1.4에서 추가됨)과 같은 새로운 키워드가 Java 진화 과정에서 추가되었습니다.

관련 문제