[Java] Enum

2024. 10. 1. 23:06ยท ๐Ÿ’ปDEV-STUDY/Java
๋ชฉ์ฐจ
  1. Java Enum
728x90
๋ฐ˜์‘ํ˜•
๋ถ„๋ฅ˜๋œ ๊ฐ์ฒด์˜ ๋ชจ์Œ


Java Enum

Enum์€ ํ•œ์ •๋œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” Java์˜ ํŠน๋ณ„ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‹ค. ํŠน์ • ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ์ผ€์ด์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ ธ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. Enum์„ ํ†ตํ•ด ์ •์˜๋œ ๊ฐ’๋งŒ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ œ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งŽ์€ ๊ฒฝ์šฐ, ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ์— Integer๋‚˜ String๊ณผ ๊ฐ™์€ ๊ฐ’๋“ค์ด ์‚ฌ์šฉ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ’์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Enum์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ’์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ž˜๋ชป๋œ ๊ฐ’์˜ ์ „๋‹ฌ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

Enum ์‚ฌ์šฉ ์˜ˆ์‹œ

๋ฌธ์ œ ์ƒํ™ฉ:

public static String createMessage(String message) {
	return "๋‹น์‹ ์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. : " + message;
}

์œ„ ์ฝ”๋“œ์—์„œ message ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์–ด๋–ค ๋ฌธ์ž์—ด์ด๋“  ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์–ด, ์ œํ•œ๋˜์ง€ ์•Š์€ ๊ฐ’์ด ์ „๋‹ฌ๋  ์œ„ํ—˜์ด ์žˆ๋‹ค. ์ด๋ฅผ Enum์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Enum์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’ ์ œํ•œํ•˜๊ธฐ:

enum MessageType {
	LOVE("์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค."),
    THANKS("๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.");
    
    private final String message;
    
    public String getMessage() {
    	return this.message;
    }
    
    MessageType(String message) {
    	this.message = message;
    }
 }
 
 public static String createMessage(MessageType type) {
 	return "๋‹น์‹ ์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. : " + type.getMessage();
 }

์œ„ ์ฝ”๋“œ์—์„œ MessageType์ด๋ผ๋Š” Enum์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์„ธ์ง€ ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ , "์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค"์™€ "๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค" ๋‘ ๊ฐ€์ง€ ๊ฐ’๋งŒ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. ์ด์ œ ์ด ๋‘ ๊ฐ’ ์ด์™ธ์˜ ๊ฐ’์€ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋  ์ˆ˜ ์—†๋‹ค.

 

Enum์œผ๋กœ ๋ณต์žกํ•œ ์ œ์•ฝ ์„ค์ •

Enum์€ ๋‹จ์ˆœํžˆ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„, ์—ฌ๋Ÿฌ ์†์„ฑ์„ ํ•จ๊ป˜ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”์„ธ์ง€์˜ ํƒ€์ž…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ „์†กํ•  ๋งค์ฒด(SMS ๋˜๋Š” EMAIL) ๊นŒ์ง€ ์ œ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ณตํ•ฉ Enum ์‚ฌ์šฉ ์˜ˆ์‹œ:

enum SendMediaType {
	SMS,
	EMAIL;
}

enum MessageType {
	LOVE("์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค.", SendMediaType.SMS),
	THANKS("๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.", SendMediaType.EMAIL);

	private final String message;
	private final SendMediaType mediaType;

	public String getMessage() {
		return this.message;
	}

	public SendMediaType getMediaType() {
		return this.mediaType;
	}

	MessageType(String message, SendMediaType mediaType) {
		this.message = message;
		this.mediaType = mediaType;
	}
}

์œ„ ์˜ˆ์‹œ์—์„œ MessageType๊ณผ ํ•จ๊ป˜ ์ „์†ก ๋งค์ฒด(SendMediaType) ๋„ ์„ค์ •ํ–ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ๋ฉ”์„ธ์ง€ ํƒ€์ž…์— ๋งž๋Š” ์ „์†ก ๋ฐฉ์‹(SMS ๋˜๋Š” EMAIL)๋„ ์ œ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฉ”์„ธ์ง€ ์ „์†ก ๋ฉ”์„œ๋“œ:

public static void sendMessageType type) {
	String message = createMessage(type);
    System.out.prirntln(String.format("๋‹ค์Œ์˜ %s ๋งค์ฒด๋กœ ๋‹ค์Œ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค : '%s'", type.getMediaType(), message));
}

 

๊ฒฐ๊ณผ:

sendMessage(MessageType.LOVE);    // ๋‹ค์Œ์˜ SMS ๋งค์ฒด๋กœ ๋‹ค์Œ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค : '๋‹น์‹ ์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. : ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค.'
sendMessage(MessageType.THANKS);  // ๋‹ค์Œ์˜ EMAIL ๋งค์ฒด๋กœ ๋‹ค์Œ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค : '๋‹น์‹ ์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. : ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.'

 

Lombok์„ ์‚ฌ์šฉํ•˜์—ฌ Enum ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •์˜

Lombok ์‚ฌ์šฉ ์˜ˆ์‹œ:

@Getter
@RequiredArgsConstructor
enum MessageType {
    LOVE("์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค.", SendMediaType.SMS),
    THANKS("๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.", SendMediaType.EMAIL);
    
    private final String message;
    private final SendMediaType mediaType;
}

 

Enum ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ ํ™œ์šฉ

Enum ๋‚ด์—์„œ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ • ๊ฐ’์„ ์ฐพ๊ฑฐ๋‚˜ ๊ฒ€์ฆํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜์œผ๋กœ Enum๊ฐ’์„ ์ฐพ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Enum์—์„œ ๊ฐ’ ์ฐพ๊ธฐ:

@Getter
@RequiredArgsConstructor
enum MessageType {
    LOVE("์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค.", SendMediaType.SMS),
    THANKS("๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.", SendMediaType.EMAIL);
    
    private final String message;
    private final SendMediaType mediaType;
    
    public static MessageType findByName(String name) {
        for (MessageType each : MessageType.values()) {
            if (each.name().equals(name)) {
                return each;
            }
        }
        throw new IllegalArgumentException("ํ•ด๋‹นํ•˜๋Š” MessageType์ด ์—†์Šต๋‹ˆ๋‹ค : " + name);
    }
}

 

์‚ฌ์šฉ ์˜ˆ์‹œ:

MessageType type = MessageType.findByName("LOVE");
System.out.println(type.getMessage()); // "์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค."

 


ref ) ํ•ด๋‹น ๋งํฌ์˜ ์šฐ์•„ํ•œํ˜•์ œ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์ž !

https://techblog.woowahan.com/2527/

 

Java Enum ํ™œ์šฉ๊ธฐ | ์šฐ์•„ํ•œํ˜•์ œ๋“ค ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

์•ˆ๋…•ํ•˜์„ธ์š”? ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค์—์„œ ๊ฒฐ์ œ/์ •์‚ฐ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์ด๋™์šฑ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‚ฌ๋‚ด ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ์ฃผ์ œ๋กœ ์ €๋Š” Java Enum ํ™œ์šฉ ๊ฒฝํ—˜์„ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์— Enum์— ๊ด€ํ•ด

techblog.woowahan.com

 


โ„น๏ธ์ฐธ๊ณ 

[ASAC 6๊ธฐ ๊ฐ•์˜์ž๋ฃŒ]

https://techblog.woowahan.com/2527/

๋ฐ˜์‘ํ˜•

'๐Ÿ’ปDEV-STUDY > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] Optional  (1) 2024.10.02
[Java] SOLID ์›์น™  (1) 2024.10.02
[Java] Interface / Abstract Class  (1) 2024.10.01
[Java] Final๊ณผ Static  (2) 2024.09.30
[Java] Collection  (0) 2024.09.28
  1. Java Enum
'๐Ÿ’ปDEV-STUDY/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] Optional
  • [Java] SOLID ์›์น™
  • [Java] Interface / Abstract Class
  • [Java] Final๊ณผ Static
1000_sang
1000_sang
CHEONSANG-DEV1000_sang ๋‹˜์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•
๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ์ž
1000_sang
CHEONSANG-DEV
1000_sang
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (77)
    • ๐Ÿ’ปDEV-STUDY (77)
      • HTTP (19)
      • JavaScript (8)
      • Git (6)
      • CS (1)
      • React (5)
      • Java (12)
      • Spring (12)
      • AWS (3)
      • Docker (7)
      • DataBase (4)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • git๋ช…๋ น์–ด
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ์›น ๊ฐœ๋ฐœ
  • Branch
  • Cookie
  • ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€
  • stateless
  • samesite
  • ์Šคํ† ๋ฆฌ์ง€
  • git branch
  • ์„œ๋“œํŒŒํ‹ฐ
  • ์›น ์ €์žฅ์žฅ์†Œ
  • secure
  • httponly
  • GitHub
  • webstorage
  • jdk
  • Git
  • WORA
  • ํผ์ŠคํŠธํŒŒํ‹ฐ
  • localStorage
  • JSON Web Token
  • JWT
  • ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€
  • sessionstrorage
  • ์˜ค๋ธ”์™„
  • bash
  • stateful
  • ใ…“
  • ์›น ์ธ์ฆ

์ตœ๊ทผ ๋Œ“๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
1000_sang
[Java] Enum
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.