programing tip

`Enum.name ()`과`Enum.toString ()`의 차이점은 무엇입니까?

itbloger 2020. 8. 19. 07:47
반응형

`Enum.name ()`과`Enum.toString ()`의 차이점은 무엇입니까? [복제]


이 질문에 이미 답변이 있습니다.

의 문서를 읽은 후 name () 을 사용할 때와 toString () 사용할 때를 String java.lang.Enum.name()이해하지 못합니다 .

열거 형 선언에 선언 된대로 정확하게이 열거 형 상수의 이름을 반환합니다. 대부분의 프로그래머는 toString 메서드가 사용자에게 더 친숙한 이름을 반환 할 수 있으므로이 메서드보다 우선적으로 toString 메서드를 사용해야합니다. 이 방법은 주로 정확한 이름을 얻는 데 의존하는 특수한 상황에서 사용하도록 설계되었으며 이는 릴리스마다 다르지 않습니다.

특히 문서에서 선호한다고 말했지만 toString()Java의 자체 StandardLocation 열거는 name문서가 그렇지 않다고 생각했을 때 사용합니다 .

public String getName() { return name(); }

또한 다음 과 같이 Enum구현 toString()합니다.

public String toString() {
    return name;
}

나는 사용자 정의 열거 덮어 쓰게 상황을 생각할 수 없다 toString()그렇게 name()하고 toString()거의 항상 정확히 동일합니다.

  1. 문서를 무시하고 항상 사용하는 name()것이 나쁜 생각 인지 설명해 주 시겠습니까?
  2. "출시마다 다르지 않을 것"이라는 문구는 어떻습니까? 이름이 다르지 않다면 그것이 의미하는 java.lang.Enum.toString()것일까 요?

주요 차이점 name()toString()name()A는 final그것이 무시 될 수 있도록하는 방법. toString()메서드는 name()기본적으로 수행되는 것과 동일한 값을 반환 하지만 toString()Enum의 하위 클래스에서 재정의 할 수 있습니다.

당신이 필요로하는 경우 따라서, 현장 자체의 이름을 사용합니다 name(). 당신이 필요한 경우 필드의 값의 캐릭터 라인 표현을 사용합니다 toString().

예를 들면 :

public enum WeekDay {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;

    public String toString() {
        return name().charAt(0) + name().substring(1).toLowerCase();
    }
}

이 예에서는 WeekDay.MONDAY.name()"MONDAY"를 WeekDay.MONDAY.toString()반환하고 "Monday"를 반환합니다.

WeekDay.valueOf(WeekDay.MONDAY.name())반환 WeekDay.MONDAY하지만, WeekDay.valueOf(WeekDay.MONDAY.toString())을 던졌습니다 IllegalArgumentException.


사용자 (로그를 보는 개발자 포함)에게 정보를 제공 하려면 toString ()을 사용하십시오 . toString()특정 값 제공하는 데 코드에 의존하지 마십시오 . 특정 문자열에 대해 테스트하지 마십시오. 누군가가 toString()반환 값을 올바르게 변경할 때 코드가 깨지면 이미 손상되었습니다.

당신이 열거 형 정수를 선언하는 데 사용되는 정확한 이름을 얻을 필요가 있다면, 당신은 사용해야 이름 ()toString재정의되었을 수 있습니다.


toString사용자에게 이름을 표시해야 할 때 사용 합니다.

예를 들어 다른 열거 형 값을 식별하고 구별하기 위해 프로그램 자체 name의 이름이 필요할 때 사용 합니다.

참고 URL : https://stackoverflow.com/questions/18031125/what-is-the-difference-between-enum-name-and-enum-tostring

반응형