열거형(Enum)과 어노테이션(Annotation)에 대해 배워보자
열거형이란 서로 관련있는 것들끼로 모아서 순서를 정해놓는 것을 말합니다. 예를 들어, Enum의 주제가 동물, 즉 Animal이라면 그 안에 있는 요소들은 ELEPHANT, LION, TIGER, RABBIT 등으로 구성될 수 있습니다. 이러한 구성요소들은 상수들이며, 대문자로 적는것이 암묵적인 규칙입니다.
enum Animal {
ELEPHANT,
TIGER,
LION,
RABBIT
}
# 열거형(Enum)
열거형의 장점들은 다음과 같습니다.
- 코드가 단순하며 가독성이 좋다.
- 인스턴스를 생성할 필요가 없다.
- 구현의도가 Enum임을 명확하게 나타낼수 있다.
다음은 열거형 메서드들을 정의한 표입니다.
리턴 타입메소드(매개변수)설명
타입 | 메소드 | 설명 |
String | name() | 열거객체 문자열 리턴 |
int | ordinal() | 열거 객체의 순번(0부터 시작)을 리턴 |
int | compareTo(비교값) | 주어진 매개값과 비교해서 순번 차이를 리턴 |
열거 타입 | valueOf(String name) | 주어진 문자열의 열거 객체를 리턴 |
열거 배열 | values() | 모든 열거 객체들을 배열로 리턴 |
* name()
enum Animal {
ELEPHANT,
TIGER,
LION,
RABBIT
}
Animal animal = Animal.LION;
String L = animal.name();
System.out.println(L);
LION
* ordinal()
//생략
Animal animal = Animal.LION;
int L = animal.ordinal()
System.out.println(L);
2
* compareTo()
//생략
Animal animal1 = Animal.LION;
Animal animal2 = Animal.TIGER;
int L = animal1.compareTo(animal2);
System.out.println(L);
1
* valueOf()
//생략
Animal animal = Animal.valueOf("LION");
System.out.println(animal);
LION
* values()
//생략
Animal[] animal = Animal.values();
for(Animal a : animal){
System.out.println(a);
}
ELEPHANT
TIGER
LION
RABBIT
# 어노테이션(Annotation)
일반적으로 코드에서 주석의 역할은 코드를 읽는 사람들의 이해를 돕기 위한 설명글입니다. 그렇다면 프로그램을 위한 설명글은 어떤것이 있을가요?
- 표준 어노테이션
- 메타 어노테이션
- 사용자 정의 어노테이션
그중에서 저희는 표준 어노테이션에 정의와 예시들을 살펴보겠습니다. 표준 어노 테이션에는 대표적으로 다음과 같은 어노테이션들이 포함되어 있습니다.
- @Override
- @Deprecated
- @SuppressWarnings
* @Override
class Animal{
void run(){}
}
class ELEPHNAT extends Animal{
@Override
void runn(){} // 스팰링 틀림
위 처럼 상속 과정에서 오버라이드 한 메서드의 이름이 개인의 실수로 틀릴 수 있습니다. 그러나 해당 경우 프로그램은 새로운 메서드를 만든 것으로 인식하여 별도의 컴파일 오류 없이 넘어가게 됩니다.
이러한 경우를 미연에 방지하고자 @Override을 통해 만약 해당 어노테이션이 부착된 메서드 명이 상속된 부모 클래스 내에 존재하지 않는다면 자동으로 컴파일 오류를 발생합니다.
* @Deprecated
@Deprecated
public String Fly(){
return "bird";
}
@Deprecated는 더이상 사용하지 않는 필드나 메서드가 생겼지만 호환을 위해 필요한 경우 사용하는 어노테이션입니다.
@Depreacated가 코드를 작성하면, 컴파일할 때 아래와 같은 메시지가 나타납니다.
1
2
Note: 파일명.java uses or overrides a deprecated API.
Note: Recomplie with -Xlint:deprecation for details.
* @SuppressWarnings
쉽게 말해 오류가 발생될 코드에 경고 메시지를 억제하는 어노테이션입니다.
@SuppressWarnings("unchecked")
ArrayList list = new ArrayList();
list.add("a");
System.out.println(list.get(0));
a
위 코드의 ArraList는 제너릭을 따로 설정하지 않았습니다 @SuppressWarnings를 통해 아무런 오류와 경고 메세지 없이 정상적으로 코드를 실행시키는 것이 가능했습니다.