개발 중 엔티티의 필드명은 자바 표기법 (CamelCase)이고 키로 쓰는 문자열은 snake_case라서 변환해주는 메서드를 만들었다.
private String camelToSnake(String s) {
StringBuilder out = new StringBuilder();
for (char c : s.toCharArray()) {
if (Character.isUpperCase(c)) {
out.append('_').append(Character.toLowerCase(c));
} else {
out.append(c);
}
}
return out.toString();
}
그랬더니 아래와 같은 오류가 떴다.
Cannot resolve method 'isUpperCase' in 'Character'
뭐지?
원인은 다음과 같았다.
import org.com.dungeontalk.domain.character.entity.Character;
엔티티명을 Character 로 지정해버리는 큰 실수를 저질렀다.
Character 로 하면 안되는 이유
Java 표준 클래스 java.lang.Character와 이름이 충돌.
PostgreSQL에서 character는 타입 키워드라 테이블명과도 충돌(큰따옴표 필요)
이제 나는 어떻게 고칠지 고민을 해야한다.
방법 1 — java.lang.Character를 전체 경로로 사용
if (java.lang.Character.isUpperCase(c)) {
out.append('_').append(java.lang.Character.toLowerCase(c));
} else {
out.append(c);
}
방법 2 — 엔티티 클래스 이름 변경
Character는 자바 표준 클래스(java.lang.Character)와 이름이 충돌하므로
엔티티 이름을 GameCharacter, PlayerCharacter 로 변경을 한다.
방법 3 — 정적 import
import static java.lang.Character.isUpperCase;
import static java.lang.Character.toLowerCase;
그 다음에
if (isUpperCase(c)) {
out.append('_').append(toLowerCase(c));
} else {
out.append(c);
}
다음부터는 이런 실수를 하지 말자
'멋쟁이 사자처럼' 카테고리의 다른 글
| [멋사 백엔드 부트캠프] 후기 (0) | 2025.09.10 |
|---|---|
| [종합 프로젝트] 게임 내 스텟 로직에 관련된 고민 (4) | 2025.08.07 |
| [종합 프로젝트] 1주차 정리 (3) | 2025.08.06 |
| [멋사 백엔드 부트캠프] 게시판 기능 구현 중 발생한 N+1 문제 해결 (1) | 2025.07.19 |
| [멋사 백엔드 부트캠프] 게시글 자주 나오는 단어 추출 기능 구현 (5) | 2025.07.18 |