JDK 1.5 부터 추가되었음
C언어는 타입이 달라도 값이 같으면 조건식 결과가 true
자바의 타입에 안전한 열거형에서는 값이 같아도 타입이 다르면 false
상수의 값이 바뀌면 해당 상수를 참조하는 모든 소스를 다시 컴파일해야함
하지만 열거형 상수를 사용하면 다시 컴파일하지 않아도됨
enum Direction { EAST, SOUTH, WEST, NORTH }
class Unit {
int x, y;
Direction dir;
void init() {
dir = Direction.EAST;
}
}
== 으로 비교 연산 가능
<, > 사용 불가, 대신 compareTo() 는 사용가능
미리 정의된 태그들을 이용해서 주석 안에 정보를 저장하고, javadoc.exe 라는 프로그램이 이 정보를 읽어서 문서를 작성하는데 사용
애너테이션은 주석처럼 프로그램 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다
JDK에서 제공하는 애너테이션
주로 컴파일러에게 유용한 정보를 제공한다.
@Override : 오버라이딩 하는 메서드에 달면 메서드의 이름을 잘못 적는 것을 막을 수 있다.
애너테이션에 붙이는 애너테이션
애너테이션을 정의할 때 애너테이션의 적용대상이나 유지기간등을 지정하는데 사용
@Target : 애너테이션이 적용가능한 대상을 지정하는데 사용
지정할 수 있는 적용대상의 종류
@Retention : 애너테이션이 유지되는 기간을 지정
유지 정책의 종류
@를 붙이는 것을 제외하면 인터페이스를 정의하는 것과 동일
@interface 애너테이션이름 {
타입 요소이름 (); // 애너테이션의 요소를 선언
}