728x90
반응형
리플렉션 기초개념
어떤 클래스의 멤버 변수, 메서드 등을 호출할 수 있다.
(예시 추가)
class의 변수들은 그야말로 변수다. 아직 어떤 값이 지정될 지 모른다. 클래스의 변수들은 생성자를 통해 인스턴스가 생성되면서 그 값들이 정해지므로 constant 하지 못하다.
어노테이션에서 attribute로 지정하기 위해서는 constant해야만 한다. 따라서 클래스 자체를 어노테이션의 속성값으로 지정할 수는 없다.
리플렉션 사용 시 유의점
- 인스턴스가 이미 생성되있는 경우라면 굳이 리플렉션을 사용할 필요가 없다. 성능에 좋지 않다.
- 컴파일 단계에서는 확인 불가하고 런타임에서만 오류를 확인할 수 있다.
- .setAccessible(true) 메서드를 통해서 접근 지정자(Java Access Modifier)를 무시할 수 있으므로 캡슐화를 무시할 수 있다.
참조
1. 기본 개념 잘 정리
https://advenoh.tistory.com/21
2. 어노테이션 사용 주의사항
https://shinsunyoung.tistory.com/83
3. 컴파일러 수준의 간단한 원리 + 필드값 변경용 어노테이션 예제
4. Maven import
https://mvnrepository.com/artifact/javax.validation/validation-api
5. message, groups, payloads
https://devonce.tistory.com/42
6. 리플렉션 및 어노테이션 같이 정리
https://inspirit941.tistory.com/entry/Java-Reflection-%EC%A0%95%EB%A6%AC
728x90
반응형
'Programming-[Backend] > Java' 카테고리의 다른 글
[TIL] 생성자 내부 멤버 메서드 실행(생성자 안에서 메서드 실행) (0) | 2022.03.07 |
---|---|
[링크] isAssignableFrom 과 instanceof의 차이 (0) | 2022.03.03 |
[작성중] 서비스 버스, jms 등 (0) | 2021.12.21 |
[자바 기초] [작성중] 5. 자바의 동작원리 : JVM의 ClassLoader (0) | 2021.12.19 |
[자바 기초] 4. 자바의 동작원리 : JVM, JRE, JDK 구분과 차이점 (0) | 2021.12.19 |