πŸ—„οΈ Backend/Java

μžλ°”(Java) - API 클래슀 (4) Enum 클래슀

kongmi 2023. 1. 26. 19:35

Enum 클래슀(μ—΄κ±°νƒ€μž…)

  • ν•œμ •λœ 값인 μ—΄κ±° μƒμˆ˜ μ€‘μ—μ„œ ν•˜λ‚˜μ˜ μƒμˆ˜λ₯Ό μ €μž₯ν•˜λŠ” νƒ€μž…
  • 열거체λ₯Ό 비ꡐ할 λ•Œ μ‹€μ œ κ°’ 뿐만 μ•„λ‹ˆλΌ νƒ€μž…κΉŒμ§€ 체크
  • JDK 1.5μ—μ„œ ν•΄λ‹Ή κΈ°λŠ₯ μΆ”κ°€(기쑴의 public class λ‚΄ final static으둜 μ •μ˜ν•˜λ˜ λΆ€λΆ„ λŒ€μ²΄)
  • μ—΄κ±° νƒ€μž… μ„ μ–Έν–ˆλ‹€λ©΄ νƒ€μž… μ‚¬μš© κ°€λŠ₯
    ➑️ μ—΄κ±° νƒ€μž…λ„ ν•˜λ‚˜μ˜ 데이터 νƒ€μž…μ΄λ―€λ‘œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  μ‚¬μš©ν•΄μ•Ό 함.
public enum DevType {
    MOBILE, FRONTEND, BACKEND, DBA, EMBEDDED
}
public enum Career {
    JUNIOR, SENIOR
}
public class Developer {
    private String name;
    private DevType type;
    private Career career;
    
    public Developer(String name, DevType type, Career career) {
        this.name = name;
        this.type = type;
        this.career = career;
    }
    
    public void DevInfo() {
        System.out.println("이름 : " + name);
        System.out.println("직업 : " + type);
        System.out.println("κ²½λ ₯ : " + career);
    }
}
public class Main {
    public static void main(String[] args) {
        Developer dev1 = new Developer("양콩미","DevType.BACKEND","Career.JUNIOR");
        dev1.devInfo();
    }
}
이름 : 양콩미
업무 : BACKEND
κ²½λ ₯ : JUNIOR
μž„μ˜μ˜ 값을 μ§€μ •λͺ»ν•˜κ²Œ 막을 수 있음.
μΆ”ν›„ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ 자료 전달할 경우 μ‰½κ²Œ μ •λ ¬ ν•  수 있음.

 

enum Rainbow { 
    RED, ORANGE, YELLOW, GREEN, BLUE, NAVY, PURPLE
}

values()

  • ν•΄λ‹Ή μ—΄κ±°μ²΄μ˜ λͺ¨λ“  μƒμˆ˜λ₯Ό μ €μž₯ν•œ 배열을 μƒμ„±ν•΄μ„œ λ°˜ν™˜
public class Main{
    public static void main(String[] args) {
        Rainbow[] arr = Rainbow.values();
        for(Rainbow e : arr) System.out.print(e + " ");
RED ORANGE YELLOW GREEN BLUE NAVY PURPLE

valueOf()

  • μ „λ‹¬λœ λ¬Έμžμ—΄κ³Ό μΌμΉ˜ν•˜λŠ” ν•΄λ‹Ή μ—΄κ±°μ²΄μ˜ μƒμˆ˜λ₯Ό λ°˜ν™˜
Rainbow rb = Rainbow.valueOf("YELLOW");
System.out.println(rb);
YELLOW

ordinal()

  • ν•΄λ‹Ή μ—΄κ±°μ²΄μ˜ μ •μ˜μ—μ„œ μ •μ˜λœ μˆœμ„œ(0λΆ€ν„° μ‹œμž‘)λ₯Ό λ°˜ν™˜
int index = Rainbow.BLUE.ordinal();
System.out.println(index);
4