리플렉션, 리플렉티브 프로그래밍

  다른 뜻에 대해서는 reflection 문서를 참조하십시오.
reflection
리플렉션, 반영
reflective programming
리플렉티브 프로그래밍

1 리플렉션[ | ]

  • 런타임 중 자신의 구조와 행위를 검사/수정할 수 있는 프로세스
  • 프로그램의 실행 과정에서 프로그램 자신의 구조를 읽거나 쓰거나 하는 기술
  • 객체가 자신의 구조나 계산 상의 의미를 얻을 수 있는 것
  • 런타임 중에 형식 인스턴스를 생성/호출하여 클래스, 인터페이스, 값 형식 등에 대한 정보를 얻을 수 있음
  • 일반적으로 프로세스 가상머신에서 실행되는 언어들이 이 기능을 지원함
  • 지원언어: 자바, PHP, 펄, 오브젝티브C, 액션스크립트, 자바스크립트, R, 파이썬, 루비, C# 등

2 리플렉티브 프로그래밍[ | ]

3 예시 (자바)[ | ]

java.lang.reflect 패키지 활용

// without reflection
Foo foo = new Foo();
foo.hello();
// with reflection 
Class cl = Class.forName("Foo");
Method method = cl.getMethod("hello");
method.invoke(cl.newInstance());
// with reflection
Object foo = Class.forName("Foo").newInstance();
Method m = foo.getClass().getDeclaredMethod("hello", new Class<?>[0]);
m.invoke(foo);

4 예시 (PHP)[ | ]

// without reflection
$foo = new Foo();
$foo->hello();
// with reflection
$reflector = new ReflectionClass('Foo');
$foo = $reflector->newInstance();
$hello = $reflector->getMethod('hello');
$hello->invoke($foo);
// using callback
$foo = new Foo();
call_user_func(array($foo, 'hello'));
// using variable variables syntax
$className = 'Foo';
$foo = new $className();
$method = 'hello';
$foo->$method();

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}