햄찌개

Reflection 본문

웹기반어플리케이션

Reflection

햄찌개 2020. 12. 15. 09:16

Reflection

 

What?

객체를 통해 클래스의 정보를 분석해 내는 프로그래밍 기법을 말한다.

구체적인 클래스 타입을 알지 못해도, 컴파일된 바이트 코드를 통해

역으로 클래스의 정보를 알아내어 클래스를 사용할 수 있다는 것이다.

 

리플렉션 기법을 통해서 형을 모르는 상태에서 객체의 메서드를 호출할 수 있다.

 

동적 바인딩이 되지 않던 자바에서 리플렉션이라는 프로그래밍 기법을 통해 동적 바인딩을 제공하는 것이다.

 

Why?

Composition 과 함께 사용되어 다형성을 구현하기 위해 사용된다.

조합을 사용하여 교체할 수 있는 위임 클래스를

리플렉션을 통해 동적/정적으로 생성하고 교체하는 방식으로 사용된다.

프레임워크에서 유연성을 위해 자주 사용되는 방식이다.

 

자바의 모든 타입은 연관된 Class 객체를 갖고 있다.

컴파일 타임에 클래스의 이름을 알 수 있다면, Class 객체를 얻을 수 있다.

 

How?

Class aClass = Test.class;



Class myObjectClass = Class.forName(className);

Package packageOfaClass = aClass.getPackage( );

Where?

JDBC> Class.forName( );

클래스 이름을 통해서 클래스를 동적로딩하는 메소드이다.

runtime시에 동적으로 원하는 라이브러리를 로딩할 수 있는 장점이 있지만

컴파일 time에 detection이 안되 runtime시 죽을 수 있는 단점이 존재한다.

그리고 동적 로딩이 더 느리다.

 

'웹기반어플리케이션' 카테고리의 다른 글

Dependency Injection  (0) 2020.12.17
마샬링 언마샬링  (0) 2020.12.15
Connection Pool  (0) 2020.12.15
기본객체 - Implicit Object  (0) 2020.12.03
flowControl  (0) 2020.12.03