(Java) 리플렉션

*리플렉션이란?

객체를 통해 클래스의 정보를 분석해내는 기법이다.

스프링을 공부하다보면 BeanFactory라는 Spring Container개념을 학습하게 된다.
이 BeanFactory는 애플리케이션이 실행한 후 객체가 호출될 당시 객체의 인스턴스를 생성하게 되는데 그때 필요한 기술이 Reflection 이다.
자바는 스크립트 언어가 아닌 컴파일 언어이다. 물론 .java-> .class-> 실행 이라는 2단계의 메커니즘을 가지고 있지만, 컴파일 언어로 분리하는게 옳다. 원래 자바에서는 동적으로 객체를 생성하는 기술이 없었다. 그리고 동적으로 인스턴스를 생성하는 Reflection으로 그 역할을 대신하게 된다.


가정을 해보면, 만약 객체의 메모리만을 알고 있고, 그리고 객체의 형태에 대해 모른다고 생생각해보자. 리플렉션으로 형은 알고 있지만, 형변환을 할 수 없는 상태에서 객체의 메소드를 호출할 수 있다.


Class c=Data.class;
//Class c=Class.forName("클래스 이름");


Method[] m=c.getMethods();
Field[] f=c.getFields();
Constructor[] cs=c.getConstructor();
Class[] inter=c.getInterfaces();
Class superClass=c.getSuperClass();




댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬