반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 자료구조공부
- 알고리즘공부
- 코테준비
- JPA예제
- Flutter
- JPA 공부
- 자바공부
- 프로그래머스
- 스프링 공부
- JPA공부
- 플러터 개발
- JPA
- 스프링공부
- nestjs스터디
- 기술공부
- DDD
- 카프카
- JPA스터디
- 기술면접공부
- nestjs
- 스프링부트
- nestjs공부
- 스프링
- Axon framework
- 스프링부트공부
- querydsl
- K8S
- 코테공부
- Kafka
- 플러터 공부
Archives
- Today
- Total
DevBoi
[Java] Reflection 개념 및 사용법 본문
반응형
<리플렉션 개념 및 장점>
리플렉션은 구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드와 타입 그리고 변수들을 접근 할수 있도록 해주는 자바 API 이다.
런타임에 지금 실행되고 있는 클래스를 가져와서 실행해야하는 경우
동적으로 객체를 생성하고 메소를 호출하는 방법
클래스,인터페이스,메소드 들을 찾을 수 있고, 객체를 생성하거나 변수를 변경하거나 메소드를 호출할 수 있다.
<리플렉션 단점>
-컴파일 타임 타입검사가 주는 이점을 누릴수 없다.
-리플렉션을 이용하면 코드가 장황해지고 지저분해진다.
-성능이 떨어진다. (리플렉션을 통한 메서드 호출은 일반 메서드 호출보다 훨씬 느리다.)
<리플렉션 주의점>
쉽게말하면, 특수한 시스템을 만들때는 강력하나, 컴파일 타임에서 명확한 객체를 사용하지 못해 독이 될수 있다.
따라서 되도록이면 인스턴스 생성에만 리플렉션을 쓰고,
생성된 인스턴스를 이용할때는 인터페이스나 상위클래스로 참조하여 사용되도록 해야한다.
ex. Member m1 = obj;
Member는 타입이 정해진 상위 클래스, obj는 프록시를 통해 생성된 객체
<리플렉션 사용 예시>
리플렉션은 , JDK dynamic proxy, 스프링 Bean 주입을 할때 쓰인다.
반응형
'Language > [Java]' 카테고리의 다른 글
[Java] Enum 클래스 (0) | 2022.03.29 |
---|---|
[Java] singleTon 디자인 패턴 (0) | 2022.03.29 |
[Java] LinkedList (0) | 2022.03.29 |
[Java] Vetor 개념 및 사용 방법 (0) | 2022.03.29 |
[Java] Wrapper 클래스 (0) | 2022.03.29 |