백엔드/Java의 정석

TIL 정리_22

ran4 2022. 3. 9. 22:09

열거형

서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다

값과 타입을 모두 체크한다

 

열거형을 정의하는 방법 : enum 열거형이름 { 상수명1, 상수명2, ...}

열거형에 정의된 상수를 사용하는 방법 : '열거형이름.상수명'

 

열거형의 조상 jave.lang.Enum 클래스

모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다

메서드 설명
Class<E> getDeclaringClass() 열거형의 Class 객체를 반환한다
String name() 열거형 상수의 이름을 문자열로 반환한다
int ordinal() 열거형 상수가 정의된 순서를 반환한다(0부터 시작)
T valueOf(Class<T> enumType,
String name)
지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다

 

열거형에 멤버 추가하기

불연속적인 열거형 상수의 경우, 원하는 값을 괄호()안에 적는다

enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10) }

괄호()를 사용하려면, 인스턴스 변수와 생성자를 새로 추가해 줘야 한다

열거형의 생성자는 묵시적으로 private이므로, 외부에서 객체 생성이 불가하다

 

열거형에 추상메서드 추가하기

fare(int distance)를 선언하면 각 열거형 상수가 이 추상 메서드를 구현해야 한다

 

애너테이션 Annatation.java

주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공한다

@Test

public void method() {} //사용예시

 

표준 애너테이션

 

@Override

오버라이딩을 올바르게 했는지 컴파일러가 체크하게 된다

 

@Deprecated

앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다

 

@FunctionalInterface

함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크한다

함수형 인터페이스에는 하나의 추상메서드만 가져야 한다는 제약이 있다

 

@SupressWarnings

컴파일러의 경고메시지가 나타나지 않게 억제한다

괄호()안에 억제하고자 하는 경고의 종류를 문자열로 지정한다

 

@SupressWarnings(“unchecked”) //지네릭스와 관련된 경고를 억제

@SupressWarnings ((“deprecation”, “unchecked”, “varargs”))

-Xling 옵션으로 컴파일하면, 경고메시지를 확인할 수 있다

 

@SafeVarargs

메서드에 선언된 가변인자의 타입이 non-reifiable타입일 경우, 해당 메서드를 선언하는 부분과

호출하는 부분에서 'unchecked'경고가 발생한다

코드에 문제가 없을때 이 경고를 억제하기 위해 @SafeVarargs를 사용한다

 

메타 애너테이션

메타 애너테이션은 애너테이션을 위한 애너테이션이다

java.lang.Annotation패키지에 포함되어있다

 

@Target

애너테이션을 정의할 때 적용대상 지정에 사용한다

여러개를 지정할 때는 배열에서처럼 괄호 { }를 사용해야 한다

 

@Retention

애너테이션이 유지(retention)되는 기간을 지정하는데 사용한다

유지 정책 의미
SOURCE 소스 파일에만 존재. 클래스 파일에는 존재하지 않음
CLASS 클래스 파일에 존재. 실행시에 사용불가. 기본값
RUNTIME 클래스 파일에 존재. 실행시에 사용가능

컴파일러에 의해 사용되는 애너테이션의 유지 정책은 SOURCE이다

실행시에 사용 가능한 애너테이션의 정책은 RUNTIME이다

 

@Documented

javadoc으로 작성한 문서에 포함시키려면 @Documented를 붙인다

 

@Inherited

애너테이션을 자손 클래스에 상속하고자 할 때 @Inherited를 붙인다

 

@Repeatable

반복해서 붙일 수 있는 애너테이션을 정의할 때 사용한다

 

@Native

네이티브 메서드에 의해 참조되는 상수필드에 붙이는 애너테이션이다

**네이티브 메서드 : JVM이 설치된 OS의 메서드

 

 

'백엔드 > Java의 정석' 카테고리의 다른 글

TIL 정리_24  (0) 2022.03.11
TIL 정리_23  (0) 2022.03.10
TIL 정리_21  (0) 2022.03.08
TIL 정리_20  (0) 2022.03.07
TIL 정리_19  (0) 2022.03.06