Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 비전공자sqld
- 항해15기
- java set 저장
- java list 출력
- sqld자격증합격
- 코딩부트캠프후기
- 격파르타비전공자
- java참조자료형
- javaJRE
- java알고리즘문제풀이
- java 자료구조 활용
- java list 저장
- 격파르타장점
- java최솟값구하기
- 컴파일
- 격파르타합격후기
- java알고리즘
- 작은수제거하기
- java map
- 인터프린터언어
- 프로그래머스
- java map 출력
- 프로그래머스제일작은수
- 격파르타후기
- java map 저장
- java기본자료형
- 항해99후기
- 노베이스부트캠프
- java set 출력
- javaJVM
Archives
- Today
- Total
코딩과 결혼합니다
231020 - 자바의 정석 chapter 12 (열거형, 애너테이션) 본문
728x90
⭐열거형
- 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공(값&타입 체크)
⭐열거형의 정의와 사용
- 열거형을 정의하는 방법
enum 열거형 이름 {상수명 1, 상수명 2,...}
- 열거형 상수 간 비교
== 연산자를 사용하여 비교할 수 있다.
equals()가 아닌 ==으로 비교가 가능하다는 것은 그만큼 성능이 좋다는 것이다.
<, >로는 비교할 수 없지만 compareTo()는 사용이 가능하다.
- switch 문의 조건식에도 사용할 수 있다.
switch(d1) {
case EAST: // Direction.EAST라고 쓰면 안된다.
System.out.println("The direction is EAST.");
break;
case SOUTH:
System.out.println("The direction is SOUTH.");
break;
case WEST:
System.out.println("The direction is WEST.");
break;
case NORTH:
System.out.println("The direction is NORTH.");
break;
default:
System.out.println("Invalid direction.");
break;
}
⭐열거형의 조상 - java.lang.Enum
- 모든 열거형은 Enum의 자손이며, 그 메서드를 상속받는다.
- values(), valueOf()는 컴파일러가 자동으로 추가
⭐열거형에 멤버 추가하기
- 불연속적인 열거형 상수의 경우, 원하는 값을 괄호 안에 적는다.
- 괄호를 사용하려면, 인스턴스 변수와 생성자를 새로 추가해 줘야 한다.
- 열거형의 생성자는 묵시적으로 private이므로, 외부에서 객체생성 불가
⭐애너테이션이란?
- 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공
- @Override
- 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.
- 오버라이딩할 때 메서드이름을 잘못 적는 실수를 하는 경우가 많다.
- 선언부 앞에 @Override를 붙이자!
- @Deprecated
- 앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다.
- ex) Date 클래스의 getDate()
- @FunctionalInterface
- 함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크
함수형 인터페이스에는 하나의 추상메서드만 가져야 한다는 제약이 있음
- 함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크
- @SuppressWarnings
- 컴파일러의 경고메시지가 나타나지 않게 억제
- 괄호 안에 억제하고자 하는 경고의 종류를 문자열로 지정
- 둘 이상의 경고를 동시에 억제하려면 @SuppressWarnings ( { "1", "2", "3" } )
⭐메타 애너테이션
- 애너테이션을 위한 애너테이션'
- java.lang.annotation패키지에 포함
- @Target
- 애너테이션을 정의할 때, 적용대상 지정에 사용
- @Retention
- 애너테이션이 유지되는 기간을 지정하는 데 사용
- 컴파일러에 의해 사용되는 애너테이션의 유지 정책은 SOURCE이다.
- 실행 시에 사용 가능한 애너테이션의 정책은 RUNTIME이다.
- @Documented, @Inherited
- javadoc으로 작성한 문서에 포함시키려면 @Documented를 붙인다.
- 애너테이션을 자손 클래스에 상속하고자 할 때 @Inherited를 붙인다.
- @Repeatable
- 반복해서 붙일 수 있는 애너테이션을 정의할 때사용
- @Repeatable이 붙은 애너테이션은 반복해서 붙일 수 있다.
⭐애너테이션 타입 정의하기
- 애너테이션을 직접 만들어 쓸 수 있다.
@interface 애너테이션이름{
타입 요소이름();
...
}
- 애너테이션의 메서드는 추상메서드이며, 애너테이션을 적용할 때 지정(순서 x)
⭐애너테이션의 요소
- 적용 시 값을 지정하지 않으면, 사용될 수 있는 기본값 지정 가능(null제외)
- 요소가 하나이고 이름이 value일 때는 요소의 이름 생략가능
- 요소의 타입이 배열인 경우, 괄호{}를 사용해야 한다.
- 규칙
- 요소의 타입은 기본형, String, enum, 애너테이션, Class만 허용됨
- 괄호 안에 매개변수를 선언할 수 없다.
- 예외를 선언할 수 없다.
- 요소를 타입 매개변수로 정의할 수 없다.
⭐모든 애너테이션의 조상
- Annotation은 모든 애너테이션의 조상이지만 상속은 불가
- Annotation은 인터페이스이다.
'2세 > Java' 카테고리의 다른 글
[자바의 정석] chapter 13 : 쓰레드 (0) | 2023.10.27 |
---|---|
231019 - 자바의 정석 chapter 12 (Generics) (0) | 2023.10.19 |
231015 - 자바의 정석 chapter 11 (컬렉션 프레임워크2) (0) | 2023.10.15 |
231014 - 자바의 정석 chapter 11 (컬렉션 프레임워크) (2) | 2023.10.14 |
230926 - 자바의 정석 chapter 10 (날짜와 시간 & 형식화) (0) | 2023.09.27 |