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에서 볼 수 없습니다.
세 곳에서 문서화 됨 :
- Java 튜토리얼의 열거 형
컴파일러는 열거 형을 만들 때 자동으로 몇 가지 특수한 방법을 추가합니다. 예를 들어, 선언 된 순서대로 열거 형의 모든 값을 포함하는 배열을 반환하는 정적 값 메서드가 있습니다. 이 메소드는 일반적으로 for-each 구문과 함께 사용하여 열거 형 유형의 값을 반복합니다.
Enum.valueOf
클래스
(특별 암시 적values
메소드는valueOf
메소드 설명에 언급되어 있음 )
열거 형의 모든 상수는 해당 형식의 암시적인 public static T [] values () 메서드를 호출하여 얻을 수 있습니다.
이 values
함수는 단순히 열거의 모든 값을 나열합니다.
메소드는 내재적으로 정의됩니다 (즉, 컴파일러에 의해 생성됨).
로부터 JLS :
또한 유형
E
의 이름 인 경우enum
해당 유형에는 다음과 같이 암시 적으로 선언 된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는 추가했습니다.
노트:
never use sex as a class name, it's difficult to read your code, we use Sex in Java
when facing a Java puzzle like this one, I recommend to use a bytecode decompiler tool (I use Andrey Loskutov's bytecode outline Eclispe plugin). This will show all what's inside a class
'Programing' 카테고리의 다른 글
Java로 사운드를 재생하려면 어떻게해야합니까? (0) | 2020.05.28 |
---|---|
장고 : 로그인 후 이전 페이지로 리디렉션 (0) | 2020.05.28 |
STL에서 실제로 deque는 무엇입니까? (0) | 2020.05.28 |
디렉토리를 비교하는 도구 (Windows 7) (0) | 2020.05.28 |
까다로운 Google 인터뷰 질문 (0) | 2020.05.28 |