item 35 hyowon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

[item35] ordinal λ©”μ„œλ“œ λŒ€μ‹  μΈμŠ€ν„΄μŠ€ ν•„λ“œλ₯Ό μ‚¬μš©ν•˜λΌ

λŒ€λΆ€λΆ„μ˜ μ—΄κ±° νƒ€μž… μƒμˆ˜λŠ” μžμ—°μŠ€λŸ½κ²Œ ν•˜λ‚˜μ˜ μ •μˆ«κ°’μ— λŒ€μ‘λ˜κ³ ,

μ—΄κ±° νƒ€μž…μ€ ν•΄λ‹Ή μƒμˆ˜κ°€ κ·Έ μ—΄κ±° νƒ€μž…μ—μ„œ λͺ‡ 번째 μœ„μΉ˜μΈμ§€λ₯Ό λ°˜ν™˜ν•˜λŠ” ordinalμ΄λΌλŠ” λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€.

κ·ΈλŸ¬λ‚˜ 이 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ 말자.

public enum Ensemble {
	SOLO, DUET, TRIO, QUARTET, QUINTET,
	SEXTET, SEPTET, OCTET, NONTET, DECTET;
	public int numberOfMusicians() { return ordinal() + 1; }
}

λ™μž‘μ€ ν•˜μ§€λ§Œ μœ μ§€λ³΄μˆ˜ν•˜κΈ° λ”μ°ν•œ μ½”λ“œ!

  1. μƒμˆ˜ μ„ μ–Έ μˆœμ„œλ₯Ό λ°”κΎΈλŠ” μˆœκ°„ numberOfMusiciansκ°€ μ˜€λ™μž‘ν•œλ‹€.
  2. 이미 μ‚¬μš©μ€‘μΈ μ •μˆ˜κ°’μ— λ‹€λ₯Έ μƒμˆ˜λ₯Ό μΆ”κ°€ν•  수 μ—†λ‹€.(예: μ—°μ£Όμžκ°€ λ‘˜λ‹€ 8λͺ…인 8쀑주(Octet), 볡4쀑주(double quartet)λ₯Ό λ™μ‹œμ— μ„ μ–Έ λΆˆκ°€)
  3. 값을 쀑간에 λΉ„μ›Œλ‘˜ 수 μ—†λ‹€. (예: 1, 2, 5 (X))

ν•΄κ²°μ±…

μ—΄κ±° νƒ€μž… μƒμˆ˜μ— μ—°κ²°λœ 값은 ordinal λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  μΈμŠ€ν„΄μŠ€ ν•„λ“œμ— μ €μž₯ν•œλ‹€.

public enum Ensemble {
	SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),
	SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),
	NONTET(9), DECTET(10), TRIPLE_QUARTET(12);

	public final int numberOfMusicians;
	Ensemble(int size) { this.numberOfMusicians = size; }
	public int numberOfMusicians() { return numberOfMusicians; }
}

"λŒ€λΆ€λΆ„ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 이 λ©”μ„œλ“œλ₯Ό μ“Έ 일이 μ—†λ‹€. 이 λ©”μ„œλ“œλŠ” EnumSetκ³Ό EnumMap 같이 μ—΄κ±° νƒ€μž… 기반의 λ²”μš© μžλ£Œκ΅¬μ‘°μ— μ“Έ λͺ©μ μœΌλ‘œ μ„€κ³„λ˜μ—ˆλ‹€." - Enum API documentation