| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 명대사
- 정보처리기사 #정보처리기사필기 #IT비전공자 #IT취준생 #취업준비생
- 일본교환학생
- 정보처리기사 #정처기 #IT취준생 #시험공부
- 취미생활
- 좋아하는음악
- 2023년
- 인스타그램
- 일어일문학과
- 고등래퍼1
- 김견강
- 개인블로그
- 일본유학생
- 일본어
- 일본어공부
- 연애만화
- 새해목표
- 공부팁
- 일상기록
- 인간관계
- 케이무브 #k-move #kmove #해외취업 #일본취업
- INFP
- 언프리티랩스타3
- 일본어공부법
- 대학생
- 온라인영어회화 #성인영어회화 #bys #beyourself #byssupporters
- ISFP
- 한국힙합
- 2026년 #새해목표 #20대후반 #정보처리기사 #일본취업 #부담내려놓기
- Today
- Total
일단 이것저것 해 보는 블로그
(Do it! 자바, 4주차-3) getClass() 메서드 오류에 대해: non-static method getClass() cannot be referenced from a static context 본문
(Do it! 자바, 4주차-3) getClass() 메서드 오류에 대해: non-static method getClass() cannot be referenced from a static context
뷔구룽 2026. 1. 28. 18:07사용한 학습 자료: 박은종, 2025, <Do it! 자바 프로그래밍 입문 [개정판]>, 이지스퍼블리싱.
https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415
Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자
eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인
ebook-product.kyobobook.co.kr
상황
학습 자료 11강 실습 중 Object 클래스의 getClass() 메서드를 사용해 보았다.
자바에서 기본 제공하는 String 클래스의 정보를 가져오는 예제 실습 중, 코드를 아래와 같이 살짝 바꿔봤다.
public static void main(String[ ] args) {
Class strClass = String.getClass( ); // String 클래스 정보 가져오기
}
다만 위 코드를 실행하면 아래 메시지를 출력하며 오류가 발생한다.
java: non-static method getClass() cannot be referenced from a static context
String 클래스 정보를 가져오는 다른 방법들은 문제 없이 출력되는데 왜 getClass() 메서드 사용할 때만 이런 오류가 발생할까?
원인 분석
Javadoc과 구글링을 통해 getClass() 메서드의 특징을 좀 더 알아보니 원인을 어느 정도 짐작해볼 수 있었다.
간단히 정리하면 아래와 같다.
1) getClass()는 '객체'의 클래스 정보를 반환하는 메서드라고 함.
2) 즉 어떤 클래스의 정보를 getClass()로 가져오려면, 반드시 해당 클래스를 인스턴스(객체)로 생성해야 함.
public static void main(String[ ] args) {
Class strClass = String.getClass( ); // String 클래스 정보 가져오기
}
위 코드에서,
String 클래스를 먼저 인스턴스화하지 않았기 때문에
getClass()가 가져올 객체가 없어 오류가 발생했음을 짐작할 수 있다!
(혹시 좀 더 자세히 설명해주실 수 있는 분은 언제든 댓글 환영합니다 ㅎㅎ)
문제 해결
코드를 아래와 같이 수정해 문제를 해결했다.
public static void main(String[ ] args) {
// Class strClass = String.getClass( ); // 기존 코드, 오류 방생
String str = new String();
Class strClass = str.getClass(); // String 클래스를 객체(인스턴스)로 만들고 getClass()로 정보 가져오기
}
-> 먼저 String 클래스의 생성자로 인스턴스를 생성해 String 클래스 자료형 변수 str에 대입한 뒤,
str(생성한 객체)에서 getClass()를 사용해 클래스의 정보를 가져올 수 있다.
결론
자바 프로그래밍에서 기본이 되는 객체(인스턴스)와, 최상위인 Object 클래스에서 기본 제공하는 String 클래스에 대한 이해가 꽤 필요했던 과정이었다. 특히 getClass()가 실제로 생성된 객체를 필요로 한다는 점.
참고자료
Almost-Native, 자바 에러 : non-static method cannot be referenced from a static context,
https://almost-native.tistory.com/368 (260128 최종접속)
Javadoc, getClass,
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass() (260128 최종접속)
John Squirrels, Java 객체 getClass() 메소드란 무엇입니까?
https://codegym.cc/ko/groups/posts/ko.627.java--getclass- (260128 최종접속)
'2026 > Do it Java 스터디(2026.01.~02.)' 카테고리의 다른 글
| (Do it! 자바, 5주차) 내부 클래스와 관련 개념(람다식, 스트림) (260202~260208) (0) | 2026.02.02 |
|---|---|
| (Do it! 자바, 4주차-4) 12장 되새김 문제 풀이(작성 중) (0) | 2026.01.31 |
| (Do it! 자바, 4주차-2) 10장 되새김 문제 풀이(작성 중) (0) | 2026.01.28 |
| (Do it! 자바, 4주차-1) 11장 되새김 문제 풀이(작성 중) (0) | 2026.01.28 |
| (Do it! 자바, 4주차) JDK 기본 클래스와 컬렉션 프레임워크 (260126~260130) (0) | 2026.01.25 |