2021. 6. 20. 21:35γκ°λ μ 리 μμ μ€/Java
Enumμ΄λ?
μ»΄ν¨ν° νλ‘κ·Έλλ°μμ μ΄κ±°ν(enumerated type, enumeration), μ΄λ(enum), ν©ν°(factor ← R νλ‘κ·Έλλ° μΈμ΄μ ν΅κ³νμ λ²μ£Όν λ³μμμ λΆλ₯΄λ λͺ μΉ)λ μμ, λ©€λ²λΌ λΆλ¦¬λ λͺ λͺ λ κ°μ μ§ν©μ μ΄λ£¨λ μλ£νμΈ κ²μ΄μμ.
μ΄κ±°μ μ΄λ¦λ€μ μΌλ°μ μΌλ‘ ν΄λΉ μΈμ΄μ μμ μν μ νλ μλ³μμ΄μ§μ.
μΌλΆ μ΄κ±°μ μλ£νμ μΈμ΄μ κΈ°λ³Έ μμλμ΄ μμ μ μλ κ²μ΄μμ. λΆλ¦¬μΈ μλ£νμ μλ‘ λ€λ©΄ κ±°μ§(False)κ³Ό μ°Έ(True)μ κ°μ΄ 미리 μ μλ μ΄κ±°νμΌλ‘ λ³Ό μ μμ§μ. μλ§μ μΈμ΄λ μ¬μ©μλ€μ΄ μλ‘μ΄ μ΄κ±°νμ μ μν μ μκ² νκ³ μλ΅λλ€.
μ΄κ±°νμ κ°κ³Ό λ³μλ μΌλ°μ μΌλ‘ κ³ μ κΈΈμ΄μ λΉνΈ λ¬Έμμ΄λ‘ ꡬνλλ©°, μ΄λ μΌλΆ μ μνκ³Ό νΈνλλ ν¬λ§·κ³Ό ν¬κΈ°λ‘ λμ΄ μλ΅λλ€. νΉν μμ€ν νλ‘κ·Έλλ° μΈμ΄μ κ°μ μΌλΆ μΈμ΄λ€μ μ¬μ©μκ° κ°κ°μ μ΄κ±°μλ₯Ό μν΄ μ¬μ©ν λΉνΈ κ²°ν©μ μ§μ ν μ μκ² νλ κ²μ΄μμ.
μ§§κ² μ 리νμλ©΄ 'μλ‘ μ°κ΄λ μμλ€μ μ§ν©'μ΄λΌκ³ ν μ μλ΅λλ€.
enumμ Class, Interfaceμ λκΈμ νμμ κ°μ§λ λ¨μμΈ κ²μ΄μμ. νμ§λ§, enumμ μ¬μ€ ClassλΌκ³ λ΄μΌ νλ΅λλ€.
νΈμλ₯Ό μν΄ enumλ§μ μν λ¬Έλ²μ νμμ κ°κ³ μκΈ° λλ¬Έμ μ΄λ₯Ό ꡬλ³νκΈ° μν΄ enumμ΄λΌλ Key Wordλ₯Ό μ¬μ©νλ κ²μ΄μμ.
enum Fruit{
APPLE, PEACH, BANANA;
}
enum Company{
GOOGLE, APPLE, ORACLE;
}
public class ConstantDemo {
public static void main(String[] args) {
/*
if(Fruit.APPLE == Company.APPLE){
System.out.println("κ³ΌμΌ μ νκ³Ό νμ¬ μ νμ΄ κ°λ€.");
}
*/
Fruit type = Fruit.APPLE;
switch(type){
case APPLE:
System.out.println(57+" kcal");
break;
case PEACH:
System.out.println(34+" kcal");
break;
case BANANA:
System.out.println(93+" kcal");
break;
}
}
}
enum Fruit{
APPLE, PEACH, BANANA;
}
μμ μλ μ½λλ κ°μ λ΄μ©μΈ κ²μ΄μμ.
class Fruit{
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BANANA = new Fruit();
private Fruit(){}
}
κΈ°λ³Έ μμ±μμ μ κ·Ό μ μ΄μκ° PrivateμΈ κ²μ΄ 보μ΄μλμ?
κ·Έκ²μ΄ Class Fruitλ₯Ό μΈμ€ν΄μ€λ‘ λ§λ€ μ μλ€λ κ²μ μλ―Ένλ΅λλ€. λ€λ₯Έ μ©λλ‘ μ¬μ©νλ κ²μ κΈμ§νλ κ²μ΄μμ.
μλ μ½λλ μ»΄νμΌ μ Exceptionμ΄ λ°μν κ²μ΄μμ.
if(Fruit.APPLE == Company.APPLE){
System.out.println("κ³ΌμΌ μ νκ³Ό νμ¬ μ νμ΄ κ°λ€.");
}
μλνλ©΄? enumμ΄ μλ‘ λ€λ₯Έ μμ Groupμ λν λΉκ΅λ₯Ό μ»΄νμΌ μμ μμ μ°¨λ¨νκΈ° λλ¬ΈμΈ κ²μ΄μμ.
β Enumκ³Ό μμ±μ
enumμ μ¬μ€ ClassμΈ κ²μ΄μμ. λλ¬Έμ μμ±μλ₯Ό κ°μ§ μ μλ΅λλ€!
enum Fruit{
APPLE, PEACH, BANANA;
Fruit(){
System.out.println( "Call Constructor " + this );
}
}
// κ²°κ³Ό
Call Constructor APPLE
Call Constructor PEACH
Call Constructor BANANA
57 kcal
Call Constructorκ° μΆλ ₯λ κ²μ μμ±μ Fruitκ° νΈμΆλμμμ μλ―Ένλ κ²μ΄μμ. μ΄κ²μ΄ 3λ² νΈμΆλμλ€λ κ²μ?
νλ(μΈμ€ν΄μ€ λ³μ)μ μ«μλ§νΌ νΈμΆλμλ€λ μλ―Έλλλ€. λ°λΌμ enumμ μμ±μλ₯Ό κ°μ§ μ μλ κ²μ΄μμ.
νμ§λ§, μλμ κ°μ΄ μ½λλ₯Ό λ³κ²½νλ©΄ μ»΄νμΌ μ μλ¬κ° λλ κ²μ΄μμ.
enum Fruit{
APPLE, PEACH, BANANA;
public Fruit(){
System.out.println( "Call Constructor " + this );
}
}
μ΄κ²μ enumμ μμ±μκ° μ κ·Ό μ μ΄μ 'Privateλ§μ νμ©' νκΈ° λλ¬Έμ΄λλλ€.
κ·Έλμ Fruitλ₯Ό μ§μ μμ±ν μκ° μλ κ²μ΄μμ. κ·Έλ λ€λ©΄ μ΄ μμ±μμ 맀κ°λ³μλ₯Ό ν΅ν΄ μΈμ€ν΄μ€ λ³μ(APPLE...)μ κ°μ λΆμ¬ν μ μλ€λ λ§μΈ κ²μ΄μμ.
enum Fruit{
APPLE("red"), PEACH("pink"), BANANA("yellow");
public String color;
Fruit(String color){
System.out.println( "Call Constructor " + this );
this.color = color;
}
}
public class ConstantDemo {
public static void main(String[] args) {
Fruit type = Fruit.APPLE;
switch(type){
case APPLE:
System.out.println( 57 + " kcal, " + Fruit.APPLE.color );
break;
case PEACH:
System.out.println( 34 + " kcal " + Fruit.PEACH.color );
break;
case BANANA:
System.out.println( 93 + " kcal"+Fruit.BANANA.color );
break;
}
}
}
/* μ€ν κ²°κ³Ό
Call Constructor APPLE
Call Constructor PEACH
Call Constructor BANANA
57 kcal, red
*/
μλ μ½λλ Fruit μ μμλ₯Ό μ μΈνλ©΄μλ λμμ μμ±μλ₯Ό νΈμΆνλ κ²μ΄μμ.
APPLE("red"), PEACH("pink"), BANANA("yellow");
enumμ Methodλ₯Ό κ°μ§ μ μλ΅λλ€. μλ μ½λλ μ΄μ μμ μ λμΌν κ²°κ³Όλ₯Ό μΆλ ₯νλ κ²μ΄μμ.
enum Fruit {
APPLE("red"), PEACH("pink"), BANANA("yellow");
private String color;
Fruit( String color ) {
System.out.println( "Call Constructor " + this );
this.color = color;
}
String getColor(){
return this.color;
}
}
public class ConstantDemo {
public static void main(String[] args) {
Fruit type = Fruit.APPLE;
switch(type){
case APPLE:
System.out.println(57+" kcal, "+Fruit.APPLE.getColor());
break;
case PEACH:
System.out.println(34+" kcal"+Fruit.PEACH.getColor());
break;
case BANANA:
System.out.println(93+" kcal"+Fruit.BANANA.getColor());
break;
}
}
}
enumμ 'Member μ 체λ₯Ό μ΄κ±° ν μ μλ κΈ°λ₯'λ μ 곡νλ΅λλ€.
public class ConstantDemo {
public static void main(String[] args) {
for(Fruit f : Fruit.values()){
System.out.println( f + ", " + f.getColor() );
}
}
}
μ 리νκ² μ΅λλ€!
μ΄κ±°νμ 'μ°κ΄λ κ°λ€μ μ μ₯'νκ³ , κ·Έ κ°λ€μ΄ λ³κ²½λμ§ μλλ‘ λ³΄μ₯νλ κ²μ΄μμ. λν, μ΄κ±°ν μμ²΄κ° Classμ΄κΈ° λλ¬Έμ μ΄κ±°ν λ΄λΆμ μμ±μ, μΈμ€ν΄μ€ λ³μ, Methodλ₯Ό κ°μ§ μ μμ΄ λ¨μν μμκ° μλλΌ λ λ§μ μν μ νλ μΉκ΅¬λλλ€!
λ³Έ λ΄μ©μ μ€νλν 리μΌμ¦λ₯Ό 곡λΆνλ©°, μ 리νμμμ μλ €λ립λλ€.
https://opentutorials.org/course/2517/14151
μΆκ° μ°Έκ³ μλ£
https://woowabros.github.io/tools/2017/07/10/java-enum-uses.html
μ£Όλνλμ κΈμ΄ λ§μμ λμ ¨λμ? ꡬλ κ³Ό 곡κ°! κ·Έλ¦¬κ³ , λκΈμ μ£Όλνλμκ² λ§μ νμ΄ λ©λλ€!
'κ°λ μ 리 μμ μ€ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] ν¨μν μΈν°νμ΄μ€ (0) | 2021.06.21 |
---|---|
[Java] Lamda Function (0) | 2021.06.21 |
[Java] ν΄λμ€, μμ, getter, setter, νλ³ν, super, μ€λ²λΌμ΄λ©μ νμ©ν μμ (0) | 2021.03.16 |
[Java] Classμ λνμ¬ (λ―Έμμ±) (0) | 2021.03.15 |
[Java] ν€λ³΄λμμ μ λ ₯λ λ¬Έμμ΄μ μ μλ‘ λ°κΎΌ λ€ κ·Έ κ°μ μ΄ν©κ³Ό νκ· κ΅¬νκΈ° (0) | 2021.03.08 |