작성
·
41
0
안녕하세요 자바를 복습하다가 헷갈려서 질문 남깁니다
문제와 풀이 2번 HttpStatus 코드 정답에서
public enum HttpStatus {
....
public static HttpStatus findByCode(int code) {
for(HttpStatus status : values()) { ...
...
}
findByCode는 static 메서드인데 안에 values()가 있길래 values() 메서드도 static 메서드겠구나하고
enum 클래스에 들어가 values()를 찾으려했습니다 . 그런데 enum의 메서드에는 values()가 없었어요..
GPT에게 물어보니 values()는 enum 클래스에서 자동으로 생성되는 static 메서드라는데 이게 무슨말인지 이해가 잘 안갑니다 !..
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 한조님!
enum
클래스의 values()
메서드에 대해 궁금하셨군요. 이 메서드는 자바 enum
에서 자동으로 제공되는 특별한 메서드로, 해당 enum 타입의 모든 상수를 배열에 담아 반환합니다. findByCode
메서드에서는 이 values()
메서드를 사용하여 정의된 모든 HttpStatus
상수를 순회하면서 특정 코드를 가진 상수를 찾는 방식으로 구현되어 있습니다.
여기서 자동으로 생성되는 static 메서드라는 것은, 자바 컴파일러가 enum을 처리할 때 자동으로 values()
메서드를 추가해준다는 의미입니다. 따라서 특별히 선언하지 않아도 모든 enum 타입은 이 메서드를 지원하게 됩니다.
이는 자바 언어의 특징으로, enum은 단순한 상수 집합 이상의 기능을 가지고 있으며, 열거형 상수들을 다루기 쉽게 해줍니다. 이러한 메커니즘은 자바에서 코드를 간결하게 유지하면서도 열거형 데이터 타입을 쉽게 조작할 수 있도록 해주는 중요한 요소입니다.
더 자세한 설명을 포함하고 있는 유사한 질문과 답변은 아래 링크에서 확인하실 수 있습니다:
이 답변이 도움이 되었기를 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏