2016-06-14 1 views
1

열거 형에 대해 배우고 있으며이 메서드가 제공하는 목적을 이해하지 못합니다.static valueOf() 메서드의 요점은 무엇입니까? (열거 형)

예 :

enum Fruits{ 
    apple, pear, orange 
} 

class Demo{ 
    f = Fruits.valueOf("apple"); //returns apple... but I had to type it! 
           // so why wouldn't I save myself some time 
           // and just write: f = Fruits.apple; !? 

}  
+3

사용자 입력으로 "사과"문자열을 받았고이를 열거 형 요소로 해결하려고 시도 했습니까? – JonK

+0

한 예로 직렬화 된 텍스트 메시지 (예 : JSON)가 있습니다.이 중 하나의 값은 열거 요소의 표현입니다. 실제 enum 요소를 역 직렬화하려면 'valueOf'를 사용하는 것이 좋습니다. – Mena

답변

2

valueOf 방법의 요점은 당신에게 String들로 프로그램에 관한 Fruits 값을 얻는 방법을 제공하는 것입니다 - 예를 들어, 값은 구성 파일이나 사용자 입력에서 올 때 :

String fruitName = input.next(); 
Fruits fruit = Fruits.valueOf(fruitName); 

이상, 과일의 이름은 최종 사용자가 제공합니다. 프로그램은 실행시에 어떤 과일이 공급되는지 알지 못하더라도이를 enum으로 읽고 처리 할 수 ​​있습니다.

1

@dasblinkenlight에 동의합니다. 런타임 입력이있는 경우 Enum.valueOf() 메서드를 사용할 수 있습니다.

String input="apple" //It may be passed from some where 
Fruits fruit = Fruits.valueOf(input); // Here you will get the object of type Fruits 

한가지 더 내가 열거는 다음 valueOf() 메서드를 대신 null을 반환하는 런타임 예외가 발생합니다,이 입력에 존재하지 않을 경우, 여기에 추가 할. 예외는 다음과 같습니다 :

Exception in thread "main" java.lang.IllegalArgumentException: No enum constant