241112 Enum (feat.함수형 인터페이스)

물고기가자라면어그로·2024년 11월 12일
0

오늘은 Enum에 대해 배웠다.

Enum

Enum특정 값들로만 입력이 가능한 데이터타입이다. 열거형이라고도 부른다.
예를 들어 계절은 세상에 딱 네가지로 분류되어있다. 그런 사계절로 Enum을 만들 수 있다.

public enum Season{
	SPRING, SUMMER, FALL, WINTER
}

Enum 도 필드를 생성할 수 있으며, 이 때 생성한 필드는 반드시 Enum 생성자의 매개변수로 들어가야한다.
Enum의 생성자는 Enum 값들에 대한 생성자이며 이 매개변수들에는 함수형 인터페이스가 들어갈 수 있다.

함수형 인터페이스

함수형 인터페이스는 여럿이 있지만 대표적으로 다음과 같은 것들이 있다.

기본 함수형 인터페이스

  • Consumer<T> : 데이터타입 T를 매개변수로 받아 반환값 없이 함수를 실행
  • Supplier<T> : 매개변수 없이 데이터타입 T를 반환
  • Function<T, R> : 데이터타입 T를 매개변수로 받아 데이터타입 R을 반환
  • Predicate<T> : 데이터타입 T를 매개변수로 받아 boolean 타입을 반환

매개변수가 두 개인 함수형 인터페이스

  • BiConsumer<T,U> : 데이터타입 T와 U를 받아 반환값 없이 실행
  • BiFunction<T, U, R> : 데이터타입 T와 U를 받아 데이터타입 R을 반환
  • BiPredicate<T, U> : 데이터타입 T와 U를 받아 boolean 타입을 반환

이 때, 이 함수형 인터페이스들을 실제로 사용하기 위해서(매개변수 적용) 다음과 같은 식을 덧붙여준다.

  • Supplier형은 .get()
  • Consumer형은 .accept(T t)
  • Function형은 .apply(T t)
  • Predicate형은 .test(T t)

함수형 인터페이스를 매개변수로 사용한 Enum의 예시는 다음과 같다.
import java.util.function.Function;

public enum LolSalary {

	//enum 값들 : Function<T t>를 람다식으로 표현
    TOP ((salaryCap) -> (int)(salaryCap*0.2)),
    JUNGLE ((salaryCap) -> (int)(salaryCap*0.1)),
    MID ((salaryCap) -> (int)(salaryCap*0.4)),
    ADC ((salaryCap) -> (int)(salaryCap*0.2)),
    SUPPORT ((salaryCap) -> (int)(salaryCap*0.1));

    //필드
    public Function<Integer, Integer> salary;

    //생성자 : 반드시 필드를 매개변수로 가지고 있어야한다.
    LolSalary(Function<Integer, Integer> salary){
        this.salary = salary;
    }
}

0개의 댓글