
[Version]
⦁ 2024.04.04 / [Java / Trouble Shooting] Static member 'com.model.Language.PYTHON' accessed via instance reference
Static member 'com.model.Language.PYTHON' accessed via instance reference
이 오류는 클래스의 정적 멤버를 인스턴스 참조를 통해 접근하려고 할 때 발생한다. 정적 멤버는 클래스의 인스턴스와 관련이 없으며, 클래스 자체에 속하는 멤버이다. 따라서, 정적 멤버에 접근할 때는 클래스의 이름을 사용해야 한다.
나의 경우, switch-case문을 통해 Enum 클래스에 정의된 변수를 비교하는 과정에서 문제를 발견하였다. 먼저 최초로 작성된 코드는 다음과 같다.
Language language = problem.getLanguage();
switch (language) {
case language.PYTHON:
// PYTHON 타입일 때 실행되는 로직
break;
case language.JAVA:
// JAVA 타입일 때 실행되는 로직
break;
default:
break;
}
Language클래스는 Problem클래스 내에 있는 Enum으로 선언된 변수이다. 해당 클래스를 인스턴스화 한 이후 case문을 통해 language.PYTHON 또는 language.JAVA와 같이 사용을 하니 발생한 문제였다.
Language language = problem.getLanguage();
switch (language) {
case PYTHON:
// PYTHON 타입일 때 실행되는 로직
break;
case JAVA:
// JAVA 타입일 때 실행되는 로직
break;
default:
break;
}
따라서 인스턴스를 사용하는 것이 아닌 정적 멤버 이름을 바로 작성하여 문제를 해결하였다.
'Framework > SpringBoot' 카테고리의 다른 글
| [Spring Boot / Trouble Shooting] org.hibernate.query.SemanticException: Could not interpret path expression 's' (0) | 2024.04.30 |
|---|---|
| [Java / Trouble Shooting] Not annotated parameter overrides @NonNullApi parameter (0) | 2024.04.09 |
| [Java / Spring] 2차원 배열 정렬 방법 (0) | 2024.03.20 |
| [Java / Spring] REST API이란? (0) | 2024.03.15 |
| [Java / Spring] 다양한 Map 출력 방법 (0) | 2024.03.13 |