| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스레드 덤프
- ibatis
- 프로세스
- integer
- 영상편집
- API
- letterspacing
- START WITH
- 컨트롤러
- Database
- Docker
- 안드로이드 스튜디오
- MariaDB
- 티스토리챌린지
- equals
- 삼성증권
- 오블완
- 키보드
- 스레드
- wsdl
- java
- HTML
- oracle
- Linux
- http
- 톰캣
- cmd
- Tomcat
- MySQL
- JDBC
- Today
- Total
블로그 이름
[JAVA] Reflection API 본문
오늘은 JAVA Reflection API 에 대해 알아보고자 한다.
리플렉션은 힙 영역에 로드된 Class 타입의 객체를 통해 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메소드를 접근 제어자와 상관없이 사용할 수 있도록 지원하는 .API이다.
JVM의 클래스 로더에서 클래스 파일에 대한 로딩을 완료한 후 클래스 타입 객체를 힙 영역에 로드한다. (new 키워드 x)
JAVA에서 동적으로 객체를 생성하는 기술이다.
사용법은 아래와 같다.
Class<?> test = Class.forName("java.lang.String");
System.out.println(test);
위 방법으로 가져온 class 타입의 인스턴스로 필드와 메소드를 사용할 수 있다.
Class<?> testPerson = Person.class;
// 필드 정보 가져오기
Filed[] fileds = testPerson.getDeclaredFileds();
for (Field field : fields)
System.out.println(filed.getName());
//생성자 호출 및 인스턴스 생성
Constructor<?> constructor = testPersoon.getDeclaredConstructor(String.class, int.class);
constructor.setAccessible(true);
Object person = constructor.newInstance("name", 20);
// 메소드 호출
Method startMethodTest = testPerson.getDeclareMethod("startMethodTest");
startMethodTest.invoke(person);
getDeclaredFields 메소드로 필드 정보를 가져오고
getDeclaredConstructor 메소드로 생성자 정보를 가져온뒤
newInstance 메소드로 인스턴스를 생성한다.
이후 getDeclaredMethod 메소드를 사용하여 startMethodTest 메소드 정보를 가져와서 해당 메소드를 호출한다.
오늘은 Reflection API를 사용하여 클래스 정보를 알아내고 동적으로 인스턴스를 생성하여 메소드를 호출하는 방법을 알아보았다.
'개발 > Java' 카테고리의 다른 글
| [JAVA] JDBC의 Connection, Statement, ResultSet (0) | 2025.04.22 |
|---|---|
| [JPA] Java Persistance API 란 (0) | 2025.02.25 |
| [JAVA] Java 및 cmd 기본 명령어 (1) | 2025.02.12 |
| [JAVA] 자바 버전별 차이 및 특징 (8, 11, 17, 21) (0) | 2025.02.12 |
| [JAVA] 자바 버전 여러 개 활용하기 (프로그램 실행 시 자바 버전 변경) (0) | 2025.02.12 |