배경
아래 코드에서 fromSymbol이라는 Enum의 메서드가 왜 static으로 선언되기전, 컴파일 에러가 발생
(보충설명)
fromSymbol의 목적은 문자열("+", "-", "*", "/")을 받아 Enum 상수 중 하나(Operator.ADD 등)를 반환하는 것
// 문자열을 Enum으로 변환
public static Operator fromSymbol(String symbol) {
for (Operator op : values()) {
if (op.getSymbol().equals(symbol)) {
return op;
}
}
throw new IllegalArgumentException("잘못된 연산자입니다: " + symbol);
}
}
enum이란?
미리 정의된 상수들의 특별한 집합
enum의 특성
- 추가적인 객체 생성 없이 외부에서 사용 가능 (enum 내부 메소드와 별개)
- public static final : 대문자로 적는 것이 원칙
- 열거시에는 콤마(,)로, 끝날 시에는 세미콜론(;)으로 마무리한다.
- 다른 클래스처럼 생성자를 만들 수 있음
- .values() 메소드를 통해 내부의 각 상수들을 배열의 형태로 가져올 수 있음
이유
- Enum 인스턴스와 무관한 기능이기 때문
- Enum 타입은 직접 인스턴스를 만들 수 없음
- 문자열 → Enum 변환 로직은 전체 Enum에 대한 정적 팩토리 역할
- 편의성과 가독성
정리
fromSymbol()을 static으로 선언하는 이유:
- 인스턴스 상태와 무관한, Enum 전체에 대한 기능이기 때문
- Enum은 임의 인스턴스 생성 불가 → 인스턴스 메서드로 설계하면 논리적 모순
- 문자열을 Enum 값으로 변환하는 정적 팩토리 메서드의 역할
- 사용성과 가독성 측면에서도 static이 자연스럽고 바람직함
'Projects > Java [Personal]' 카테고리의 다른 글
| Test - 1부 (0) | 2026.02.12 |
|---|---|
| [CS 기초] 오버플로우 (0) | 2026.01.14 |
| [Java] 이커머스 프로그램 개발일지 (0) | 2025.12.18 |
| [프로젝트 리뷰] 계산기 만들기 과제 (0) | 2025.12.16 |
| [Java] 특정 문자열을 입력해야만 무한루프를 종료하는 기능 구현 (Con'd) (2) | 2025.12.09 |