Java -13

김정현·2024년 4월 26일
0

JAVA

목록 보기
15/21

열거형(enums)

  1. 열거형이란?
    상수만을 위한 클래스 일종
    (추상 클래스임)
  2. 열거형 정의와 사용
enum 클래스명 {
	상수, 상수, 상수 ..
}

생성자 함수가 존재하지만 private 로 설정되어서 객체 생성이 불가능하다.

생성자를 통해 상수에 값 부여는 가능

public enum Transporatation {
    BUS(1400),
    SUBWAY(1300),
    TAXI(4500);

    Transporatation(int fare) {
       
    }
}

public int getFare() {
        return fare;
}

상수간의 비교 ===
3. 모든 열거형의 상위 클래스 - java.lang.Enum

enum Transport {

}

abstract class Transportaion extends java.lang.Enum {
	public static final BUS = new Transportation();
	public static final SUBWAY = new Transportation();}
    public static final TAXI = new Transportation();
}

1) Enum 클래스에 정의된 메서드

상수를 문자열로

-> String name() : Enum 상수 이름을 문자열로 변환

(String toString() 동일)

int ordinal() : 상수의 위치 번호

static valueOf : 변환 메서드

2) 컴파일러가 자동으로 추가해주는 메서드

문자열을 상수로

-> valueOf(String str) : 호출 객체가 Enum 상수이므로 Class 객체는 필요X

values() : 정의된 상수 목록(enum)을 배열로 반환

  1. 열거형에 멤버 추가하기
  2. 열거형에 추상메서드 추가하기
public enum Transporatation {
    BUS(1350) {
        public int getTotal(int person) {
            return getFare() * person;
        }
    },
    SUBWAY(1450) {
        public int getTotal(int person) {
            return getFare() * person;
        }
    },
    TAXI(4800) {
        public int getTotal(int person) {
            return getFare() * person;
        }
    };

    private final int fare;

    Transporatation(int fare) {
        this.fare = fare;
    }

    public int getFare() {
        return fare;
    }

    public abstract int getTotal(int person);
}

애너테이션(annotation)

정보를 전달하기 위해 목적이 정해진 클래스의 일종

  1. 애너테이션이란?
    주석, 주해..
    정보 전달
@interface 애노테이션명 {

}

컴파일러가 자동변환

interface 애노테이션명 extends java.lang.annotation.Annotation{
}
  1. 표준 애너테이션
    -JDK에 이미 정의된 애노테이션
    @Override : 재정의된 메서드임을 알려주는 목적
    @Deprecated : 향후 제거될 가능성이 있는 메서드임을 알려주는 목적

  2. 메타 애너테이션
    -애노테이션을 정의할때 필요한 애노테이션

    -@Target : 애노테이션 적용 범위 설정
    ElementType : 적용 범위 enum 상수

     METHOD : 메서드 위에 적용
      FIELD : 멤버 변수
      CONSTRUCTOR : 생성자
      PARAMETER : 매개변수

    -@Retention : 정보 전달 시점
    RetensionPolicy

     SOURCE : 애노테이션이 java 파일 상에 유지, 컴파일 완료 후(class 파일)에는 제거 
     	- 컴파일러가 필요한 정보를 제공
        - 컴파일러가 필요한 정보
        
     CLASS : 기본값
     	   : 애노테이션이 java 파일 상에 유지, 컴파일 완료 후 유지
            - 정보 전달 X
            - 기본값임에도 사용 X
            
     RUNTIME
     		: 애노테이션이 java 파일 상에 유지, 컴파일 완료 후 (class 파일) 유지
            	- 정보전달이 실행 중에 제공
                

단순 정보 전달 목록(설정 X) : 마커 애노테이션 -@Override

@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
}

애노테이션에서 추가 정보 전달
-추상 메서드 정의

0개의 댓글