[Java] 리플렉션 (Reflection)

2023. 6. 18. 19:26·Java/Base
728x90
728x90

리플렉션 (Reflection)

  - 프로그램 실행 중에 클래스의 정보를 분석/조작할 수 있는 부분

  - 런타임 시점에 동작으로 클래스의 메서드/필드/생성자 등에 접근하고 호출할 수 있음

  - 자바의 핵심 기능

  - java.lang.reflect 패키지

 

#  클래스 정보 가져오기

1
2
3
4
5
6
7
8
9
// 1) Class.forName() 사용 
Class<?> clazz = Class.forName("com.example.MyClass");
 
// 2) 객체.getClass() 사용 
MyClass obj = new MyClass();
Class<?> clazz = obj.getClass();
 
// 3) 리터럴로 직접 .class를 붙여서 사용 
Class<?> clazz = MyClass.class;
cs

 

#  필드 정보 가져오기

1
2
3
4
5
// public 필드에만 접근 가능 
Field field = clazz.getField("fieldName");
 
// 모든 접근제한자에 접근 가능 
Field field = clazz.getDeclaredField("fieldName");
cs

 

#  메서드 정보 가져오기

1
2
3
4
5
// public 메서드에만 접근 가능
Method method = clazz.getMethod("methodName", parameterTypes);
 
// 모든 접근제한자에 접근 가능 
Method method = clazz.getDeclaredMethod("methodName", parameterTypes);
cs

 

#  생성자 정보 가져오기

1
2
3
4
5
6
7
8
9
10
11
// 클래스 정보 가져오기
Class<?> clazz = MyClass.class;
 
// public 생성자에만 접근 가능
Constructor<?> publicConstructor = clazz.getConstructor(String.class);
 
// 모든 접근제한자 생성자에 접근 가능
Constructor<?>[] constructors = clazz.getDeclaredConstructors();
for (Constructor<?> constructor : constructors) {
    System.out.println(constructor);
}
Colored by Color Scripter
cs
320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Base' 카테고리의 다른 글

[Java] 어노테이션 (Annotation)  (0) 2023.06.18
[Java] JVM (Java Virtual Machine)  (0) 2023.06.18
[Java] Garbage Collection  (0) 2023.06.18
[Java] 객체 지향 프로그래밍 (OOP)과 SOLID 원칙  (0) 2023.06.18
[Java] 데이터 형식 지정  (0) 2023.04.20
'Java/Base' 카테고리의 다른 글
  • [Java] 어노테이션 (Annotation)
  • [Java] JVM (Java Virtual Machine)
  • [Java] Garbage Collection
  • [Java] 객체 지향 프로그래밍 (OOP)과 SOLID 원칙
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (383)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (15)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    cs
    오블완
    SpringBoot
    면접
    티스토리챌린지
    http
    Swing
    SEO
    Codeigniter
    SQL
    git
    jsp
    jQuery
    tailwindcss
    Android
    php
    typeScript
    zapier
    Hotkeys
    js
    errorNote
    java
    vuejs
    C#
    CSS
    Wordpress
    개발일지
    HTML
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 리플렉션 (Reflection)
상단으로

티스토리툴바