java.lang.reflect의 핵심 리플렉션 기능을 이용하면 메모리에 적재된 클래스으 ㅣ정보를 가져오는 프로그램을 작성할 수 있다. Class객체가 주어지면, 해당 객체가 나타내는 클래스의 생성자, 메서드, 필드 등을 나타내는 Constructor,Method,Field 객체들을 가져올 수 있다. 게다가 이렇게 얻은 객체들로 거기 연결되어 있는 실제 생성자, 메서드, 필드들을 조작할 수 있다. 하지만 이런 능력에는 대가가 따른다.
- 컴파일 시점에 자료형을 검사함으로써 얻을 수 있는 이점들을 포기해야 한다. 리플렉션을 통해 존재하지 않는,또는 접근 할 수 없는 메서드를 호출하면 실행 도중에 오류가 발생할 것이다. 그러니 특별히 주의해야 한다.
- 리플렉션 기능을 이용하는 코드는 가독성이 떨어진다.
- 성능이 낮다. 리플렉션을 통한 메서드 호출 성능은 일반적인 메서드 호출에 비해 훨씬 낮다.
요약
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[일반적인 프로그래밍 원칙들]규칙55. 신중하게 최적화하라 (0) | 2017.05.06 |
---|---|
[일반적인 프로그래밍 원칙들]규칙54. 네이티브 메서드는 신중하게 사용하라 (0) | 2017.05.06 |
[일반적인 프로그래밍 원칙들]규칙52. 객체를 참조할 때는 그 인터페이스를 사용하라 (0) | 2017.05.06 |
[일반적인 프로그래밍 원칙들]규칙51. 문자열 연결시 성능에 주의하라 (0) | 2017.05.05 |
[일반적인 프로그래밍 원칙들]규칙50. 다른 자료형이 적절하다면 문자열 사용은 피하라 (0) | 2017.05.05 |