반응형
- 클래스와 인터페이스를 메모리에 로드하고 조작하는데 사용되는 메타데이터를 포함하는 객체
- Class 객체를 통해 클래스의 정보를 동적으로 가져올 수 있음( 리플렉션 )
- 리플렉션을 통해 클래스 구조, 필드 확인, 인스턴스 생성, 메소드 호출, 필드 설정 등 가능
주요 용도
- 클래스 정보 가져오기: 클래스의 이름, 접근 제어자, 상위 클래스, 인터페이스 등의 정보를 동적으로 얻을 수 있음
- 인스턴스 생성: Class 객체를 통해 new Instance() 메소드를 호출하여 해당 클래스의 인스턴스를 동적으로 생성 가능
- 메소드 호출: Class 객체와 리플렉션을 사용하여 동적으로 메소드를 호출 가능
getMethod()로 메소드를 얻고, invoke()를 통해 메소드를 호출함 - 필드 접근: Class 객체를 사용하여 클래스의 필드를 동적으로 접근하고 값을 설정할 수 있다.
getFiled()를 통해 필드에 접근하고, get(), set()을 통해 필드 값을 조작할 수 있다. - 동적 코드 분석: 런타임에 코드를 분석하고 조사가 가능
예) 어노테이션 정보를 읽거나 메서드의 파라미터 정보를 동적으로 분석이 가능
주의사항
- 성능이슈와 타입 안정성에 대해 문제가 발생할 수 있음
- 적절한 예외처리와 타입 검사를 수행하여 안전한 코드를 작성해야함
- 일반적으로 정적인 타입의 클래스 사용을 권장
반응형
'프로그래밍 언어 > 자바' 카테고리의 다른 글
this vs getClass() (0) | 2023.07.31 |
---|---|
[자바] 예외클래스 (0) | 2021.09.17 |
[자바] log4j 자바소스로 구현 (0) | 2021.09.15 |
[자바] 로그(log)란? (2) | 2021.06.09 |
[자바] I/O(입출력) Stream이란? (0) | 2021.06.05 |