일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- CSS
- 공부를열심히
- squery
- jsp
- 객체지향프로그래밍
- 테이블
- javascript
- web
- 웹프로그래밍
- Project
- 객제지향
- html
- 공부
- Java
- orcle
- Oracle
- ERWin
- 프로젝트
- 코딩
- 객제지향프로그래밍
- 데이터베이스
- 자바
- 객체지향
- DB
- 웹
- sql
- 주말이다..
- UI
- 오라클
- 프로그래밍
Archives
- Today
- Total
햄찌개
Reflection 본문
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 |