아이템 53. 리플렉션 대신 인터페이스를 이용하라.
53. 리플렉션 대신 인터페이스를 이용하라.
리플렉션의 장점
java.lang.reflect
의 핵심 리플렉션 기능(core reflection facility)을 이용하면 메모리에 적재된 클래스의 정보를 가져오는 프로그램을 작성할수 있음Class
,Constructor
,Method
,Field
등의 객체들을 이용하면 실제 행위나 상태들을 반영적으로(reflectively) 조작할 수 있다.
리플렉션의 단점
- 컴파일 시점에 자료형을 검사함으로써, 얻을수 있는 이점들을 포기해야 함, 예를 들어 리플렉션을 통해 존재하지 않는 메서드에 접근하면 실행 도중 오류 발생함
- 리플렉션으로 코드를 작성하면 가독성이 현저히 떨어짐
- 일반적인 메서드 호출에 비해 성능이 낮음
일반적인 프로그램은 프로그램 실행 중에 리플렉션을 통해 객체를 이용하려 하면 안된다.
결론
- 리플렉션은 특정한 종류의 복잡한 시스템 프로그램밍에 필요한 강력한 도구이다. 하지만, 단점이 많다.
- 컴파일 시점에는 알수 없는 클래스를 이용하는 프로그램을 작성한다면, 리플렉션을 사용하되 가능하면 객체를 만들 때만 이용하자.
- 객체를 참조 할때는 컴파일 시에 알고 있는 인터페이스나 상위 클래스를 이용하자.