[JAVA] Java Reflection API에서 클래스 이름 가져오기: getName() vs getCanonicalName()

2023. 9. 12. 23:00· JAVA
목차
  1. 💋 인트로
  2. 💋 getName() vs getCanonicalName()
  3. 💋 코드 예시
  4. ✔️ 실행 코드
  5. ✔️ 실행 결과
  6. 💋 그렇다면, 두 값은 내부 클래스가 없는 상황에서는 언제나 동일할까?
  7. 💋 참고자료
반응형

 

💋 인트로

이번 포스팅에서는, Java Reflection API에서 클래스의 이름을 가져오기 위해 사용하는 두 메서드에 대해서 비교해서 알아봅시다! 

 

💋 getName() vs getCanonicalName()

  • getName() 메서드
    • Class 객체의 이름을 반환합니다.
    • 클래스의 패키지 이름을 포함한 전체 경로
  • getCanonicalName() 메서드
    • Class 객체의 정규화된 이름을 반환
    • 클래스의 패키지 이름을 포함하지만, 내부 클래스의 경우에는 $으로 구분하여 표기

 

💋 코드 예시

✔️ 실행 코드

public class ExampleClass {
	public static void main(String[] args) {
		// 클래스 객체 생성
		Class<?> classObj = ExampleClass.InnerClass.class;

		// getName() 메서드 사용
		String name = classObj.getName();
		System.out.println("getName() 결과: " + name);

		// getCanonicalName() 메서드 사용
		String canonicalName = classObj.getCanonicalName();
		System.out.println("getCanonicalName() 결과: " + canonicalName);
	}

	// 내부 클래스 정의
	static class InnerClass {
	}
}

 

✔️ 실행 결과

 

 

 

위의 예시 코드에서 ExampleClass는 외부 클래스이며, InnerClass는 내부 클래스입니다.

 

getName() 메서드는 클래스의 이름을 반환합니다.

  • 외부 클래스인 ExampleClass의 경우 getName()은 "com.example.ExampleClass"를 반환합니다.
  • 내부 클래스인 InnerClass의 경우 getName()은 "com.example.ExampleClass$InnerClass"를 반환합니다.

이 메서드는 클래스의 실제 경로를 반환하며, 내부 클래스의 경우 $ 기호를 사용하여 외부 클래스와 내부 클래스를 구분합니다.

 

getCanonicalName() 메서드는 클래스의 정규화된 이름을 반환합니다.

정규화된 이름은 패키지 이름을 포함하며, 내부 클래스의 경우 .을 사용하여 외부 클래스와 내부 클래스를 구분합니다.

  • 외부 클래스인 ExampleClass의 경우 getCanonicalName()은 "com.example.ExampleClass"를 반환합니다.
  • 내부 클래스인 InnerClass의 경우 getCanonicalName()은 "com.example.ExampleClass.InnerClass"를 반환합니다.

💋 그렇다면, 두 값은 내부 클래스가 없는 상황에서는 언제나 동일할까?

네!

 

getName()과 getCanonicalName() 메서드는 내부 클래스가 없는 상황에서는 항상 동일한 값을 반환합니다.

내부 클래스가 없는 경우에는 클래스의 이름을 반환하기 때문입니다. 

 

💋 참고자료

  • https://www.baeldung.com/java-reflection
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟

 

반응형

'JAVA' 카테고리의 다른 글

[JAVA] try-with-resources를 사용해서 리소스 누수를 방지하자!  (0) 2023.09.29
[JAVA] Reflection API: 개념, 사용법, 예시 코드  (0) 2023.09.28
[JAVA] 멀티 쓰레드의 동기화(synchronization): 메서드, 메서드 내 블록에 synchronized 키워드를 붙이자!  (0) 2023.09.10
[JAVA] 쓰레드 풀(Thread Pool): 개념, 장점, 사용 방법, 코드 예시 (feat. Baeldung)  (1) 2023.09.09
[JAVA] 프로세스와 스레드: 개념, Java의 쓰레드 구현, I/O Blocking  (0) 2023.09.08
  1. 💋 인트로
  2. 💋 getName() vs getCanonicalName()
  3. 💋 코드 예시
  4. ✔️ 실행 코드
  5. ✔️ 실행 결과
  6. 💋 그렇다면, 두 값은 내부 클래스가 없는 상황에서는 언제나 동일할까?
  7. 💋 참고자료
'JAVA' 카테고리의 다른 글
  • [JAVA] try-with-resources를 사용해서 리소스 누수를 방지하자!
  • [JAVA] Reflection API: 개념, 사용법, 예시 코드
  • [JAVA] 멀티 쓰레드의 동기화(synchronization): 메서드, 메서드 내 블록에 synchronized 키워드를 붙이자!
  • [JAVA] 쓰레드 풀(Thread Pool): 개념, 장점, 사용 방법, 코드 예시 (feat. Baeldung)
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 대규모 시스템 설계
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • 스트림
  • Java
  • 우아한테크코스5기
  • 상속과조합
  • Composition
  • 우테코5기
  • Stream
  • 컴포지션
  • 우아한테크코스
  • TDD
  • 우테코
  • 람다
  • 함수형프로그래밍
  • lamda
  • 람다와스트림
  • 예외
  • 레벨로그
  • 조합
  • 상속
  • OOP
hELLO · Designed By 정상우.v4.2.0
깃짱
[JAVA] Java Reflection API에서 클래스 이름 가져오기: getName() vs getCanonicalName()
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.