리플랙션(Reflection)

"어떤 것에 대한 설명 또는 묘사" "거울 등에 미친 모습"

자바에서는 클래스 메서드의 내부 구조 를 들여다 볼 때 사용하는 도구라는 뜻

구체적인 클래스 타입을 알지 못해도, 컴파일된 자바 바이트 코드를 이용하여 역으로 클래스에 대한 정보를 알아내어, 클래스를 사용할 수 있는 기법을 말한다. 마치 거울에 비친 모습과 비슷하다고 하여 리플랙션이라는 이름이 붙여진 것


Class.newInstance()                   주어진 클래스의 인스턴스를 생성

Class.getName()                       클래스의 이름을 반환

Class.getMethod()                     클래스의 선언된 모든 public 메서드의 목록을 반환

Method.invoke()                        해당 메서드를 호출

Method.getParameterTypes()         메서드의 매개변수 목록을 배열로 반환



리플랙션 API가 필요한 이유는 무엇일까?

코드의 재사용성 및 유지보수를 쉽게 하기 위해서 서블릿에서 클래스 파일을 분리시키는데요.

이렇게 되면, 원래의 클래스명과 타입같은 것을 알아내기가 힘들어집니다. 하지만 리플렉션 api를 이용해서 class의 이름이나 타입 등을 알아낼 수 있는데, 이렇게 되면 모델, 뷰, 컨트롤러를 분리하는 코드를 만들기가 쉬워집니다.

스프링에서는 리플렉션이 컨트롤러에 구현되어 있다고 할 수 있습니다. 


추가적으로, Junit과 같은 테스트 라이브러리에서는 reflection api를 통해서 불특정 클래스를 불러와서 실행시키거나 하는 동작에도 유용하게 사용된다고 합니다.



'JAVA' 카테고리의 다른 글

자바 Null Pointer Exception막는 방법  (0) 2015.08.18
자바 제네릭(Generic)이란?  (0) 2015.08.06
자바 해시맵(HashMap)  (0) 2015.08.05
자바 문자열  (0) 2015.07.26
자바가 확장한 객체지향  (0) 2015.06.30
Posted by slender ankles
,