250x250
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
- MariaDB
- 도메인 주도 개발 시작하기
- 이펙티브자바
- 자바스터디
- 자바예외
- 자바
- jpa
- 이펙티브 자바
- 인프런백기선
- 알고리즘분석
- 인프런김영한
- 스프링부트와AWS로혼자구현하는웹서비스
- 네트워크
- 혼공SQL
- 이팩티브 자바
- 알고리즘
- AWS
- java
- 자료구조
- SQL쿡북
- react
- DDD
- 클린코드
- CleanCode
- aop
- 인덱스
- AWS RDS
- 기술면접
- mysql
- vue.js
Archives
- Today
- Total
기록이 힘이다.
리플렉션보다 인터페이스를 사용하라. 본문
728x90
리플렉션은 코어단에서 많이 사용을 한다.
객체를 사용할 때 사용해야 한다. 주의해서 사용하라는 것 같다.
리플랙션을 사용하면 임의의 클래스에 접근가능.
클래스의 Constructor, Method, Field 인스턴스를 가져올수 있음.
각각에 연결된 각 생성자 메서드 필드를 조작할 수 있다.
Method.invoke는 어떤 클래스의 어떤 객체가 가진 어떤 메서드라도 호출할 수 있다.
단점!
- 컴파일타임 타입 검사가 주는 이점을 하나도 누릴 수 없다.
- 리플랙션으로 없는 메서드를 호출하면 런타임 오류가 발생함.
- 리플렉션을 이용하면 코드가 지저분하고 장황해진다.
- 성능이 떨어진다.
프레임워크 단에서 리플랙션을 사용하여 구현하는 로직들이 있음. 이들도 리플랙셔 사용을 지양하는 방향으로 진행되고있음. (단점이 명확하기 때문이다!)
리플랙션은 아주 제한된 형태로만 사용해야 그 단점을 피하고 이점만 취할수 있다.
→ 주로 리플랙션은 인스턴스 생성에만 쓰고, 이렇게 만든 인스턴스는 인터페이스나 상위 클래스로 참조하여 사용하는 방향이 좋다.
리플랙션의 단점을 보여주는 예제 (65-1)
두가지 단점.
- 첫번째 런타임에 총 여섯가지나 되는 예외를 던질 수 있다.
- java7 부터 지원하는 ReflectiveOperationException으로 런타임 에러를 잡을 수 있긴함.
- 클래스 이름만으로 인스턴스를 생성해내기 위해 무려 25줄이나 되는 코드를 사용함.
- 리플랙션이 아니었다면 생성자 한줄로 가능함
함께 스터디를 하면서 서로의 현업에 대해 이야기하고 환경을 알 수 있어 좋은 것 같다. 리플렉션 같은 경우도 기술면접에서 질문이 나오기도 하였는데 이번기회에 알아가는 시간을 가져서 좋았다.
'JAVA' 카테고리의 다른 글
[이펙티브 자바] 74. 메서드가 던지는 모든 예외를 문서화하라 (0) | 2023.04.26 |
---|---|
[이펙티브 자바] 72. 표준 예외를 사용하라 (0) | 2023.04.24 |
[이펙티브자바] 59. 라이브러리를 익히고 사용하라 (0) | 2023.04.21 |
[이펙티브 자바] 6장 열거 타입과 애너테이션 (0) | 2023.04.21 |
[이펙티브 자바] 58. 전통적인 for문보다는 for-each문을 사용하라 (0) | 2023.04.20 |