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