programing

Enum의 values() 메서드에 대한 문서는 어디에 있습니까?

goodsources 2023. 1. 3. 21:47
반응형

Enum의 values() 메서드에 대한 문서는 어디에 있습니까?

다음과 같이 열거를 선언합니다.

enum Sex {MALE,FEMALE};

다음으로 다음과 같이 열거형을 반복합니다.

for(Sex v : Sex.values()){
    System.out.println(" values :"+ v);
}

Java API를 확인했는데 values() 메서드를 찾을 수 없습니다.이 방법은 어디서 유래한 것인지 궁금합니다.

API 링크 : https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html

이 메서드는 컴파일러에 의해 추가되었기 때문에 javadoc에서는 볼 수 없습니다.

다음 3곳에 문서화되어 있습니다.

컴파일러는 열거형을 작성할 때 몇 가지 특별한 메서드를 자동으로 추가합니다.예를 들어 선언된 순서대로 열거의 모든 값을 포함하는 배열을 반환하는 정적 값 메서드가 있습니다.이 메서드는 보통 for-각 컨스트럭트와 조합하여 열거형 값을 반복하기 위해 사용됩니다.

  • Enum.valueOf 클래스
    (특별한 암묵적 의미)values방법은 설명에 기재되어 있다.valueOf방식)

열거형의 모든 상수는 해당 유형의 암묵적인 public static T[] values() 메서드를 호출하여 얻을 수 있습니다.

values함수는 단순히 열거의 모든 값을 나열합니다.

메소드는 암묵적으로 정의됩니다(즉, 컴파일러에 의해 생성됩니다).

JLS에서:

게다가 만약E의 이름입니다.enumtype, 그러면 그 타입은 암묵적으로 다음과 같이 선언되어 있습니다.static메서드:

/**
* Returns an array containing the constants of this enum 
* type, in the order they're declared.  This method may be
* used to iterate over the constants as follows:
*
*    for(E c : E.values())
*        System.out.println(c);
*
* @return an array containing the constants of this enum 
* type, in the order they're declared
*/
public static E[] values();

/**
* Returns the enum constant of this type with the specified
* name.
* The string must match exactly an identifier used to declare
* an enum constant in this type.  (Extraneous whitespace 
* characters are not permitted.)
* 
* @return the enum constant with the specified name
* @throws IllegalArgumentException if this enum type has no
* constant with the specified name
*/
public static E valueOf(String name);

실행

    for (Method m : sex.class.getDeclaredMethods()) {
        System.out.println(m);
    }

곧 알게 될 것이다

public static test.Sex test.Sex.valueOf(java.lang.String)
public static test.Sex[] test.Sex.values()

이것들은 모두 "섹스" 계층이 가진 공공적인 방법들이다.소스 코드에 없습니다.javac.exe가 추가했습니다.

주의:

  1. 섹스를 클래스 이름으로 사용하지 마십시오. 코드를 읽기가 어렵습니다. 자바에서는 섹스를 사용합니다.

  2. 이와 같은 자바 퍼즐에 직면했을 때는 바이트 코드 디컴파일러 툴을 사용하는 것을 추천합니다(안드레이 로스쿠토프의 바이트 코드 아웃라인 Eclispe 플러그인을 사용합니다).그러면 클래스 내의 모든 내용이 표시됩니다.

언급URL : https://stackoverflow.com/questions/13659217/where-is-the-documentation-for-the-values-method-of-enum

반응형