'reflection'에 해당되는 글 2건

  1. 2006.12.26 Method Reflection ... (2)
  2. 2006.12.26 Method Reflection J2SE API... (1) (3)
2006.12.26 19:10

Method Reflection ... (2)

//refection 사용 예

public
String void reflection(Object oObject, String strMethodNm, int index)
 {
   final Class[] typePara = new Class[] {int.class}; 
   
   // typePara에 의해 지정된 클래스 public 메소드를 받아옴
   Method mField = oObject.getClass().getMethod(strMethodNm, typePara);
   
   // 메소드에 사용되는 인자
   Object[] strParam  = new Object[] {new Integer(index)};
   Object retObj = mField.invoke(oDw, strParam);

   return (String) retObj; //타입 캐스팅
     
 }


Method Reflection의 경우 유용하게 쓸수도 있겠지만.. 써본결과
App의 성능을 현저히 떨어뜨리게 되므로, 되도록이면 사용을 자제하는것이
좋을거 같다는... ㅠㅠ 

Trackback 0 Comment 0
2006.12.26 17:45

Method Reflection J2SE API... (1)

boolean equals (Object  obj) : Method 가 지정된 오브젝트와 비교합니다.
 
Class  getDeclaringClass ()  :
 이 Method 오브젝트에 의해 나타내지는 메소드를 선언하는 클래스 또는 인터페이스를 나타내는 Class 오브젝트를 돌려줍니다. 

Class [] getExceptionTypes ()
:
 이 Method 오브젝트로 나타내지는 기본으로 되는 메소드에 의해 슬로우 되도록(듯이) 선언되고 있는 예외의 형태를 나타내는 Class 오브젝트의 배열을 돌려줍니다. 

int getModifiers ()
: Method 오브젝트에 의해 나타내지는 메소드의 Java 언어 수식자를 정수로서 돌려줍니다. 

String  getName ()
: 이 Method 오브젝트가 나타내는 메소드의 이름을 String 로서 돌려줍니다. 

Class [] getParameterTypes ()
: Method 오브젝트에 의해 나타내지는 메소드의 가파라미터형을 선언순서로 나타내는 Class 오브젝트의 배열을 돌려줍니다. 

Class  getReturnType ()
: 이 Method 오브젝트에 의해 나타내지는 메소드의 가짜의 반환값의 형태를 나타내는 Class 오브젝트를 돌려줍니다. 

int hashCode ()
: Method 의 해시 코드를 돌려줍니다. 

Object  invoke (Object  obj, Object [] args)
: 이 Method 오브젝트에 의해 나타내지는 기본이 되는 메소드를, 지정한 오브젝트에 대해서 지정한 파라미터로 호출합니다. 

String  toString ()
: 이 Method 를 기술하는 캐릭터 라인을 돌려줍니다. 


invoke
public Object  invoke(Object  obj,
                     Object [] args)
              throws IllegalAccessException ,
                     IllegalArgumentException ,
                     InvocationTargetException
이 Method 오브젝트에 의해 나타내지는 기본이 되는 메소드를, 지정한 오브젝트에 대해서 지정한 파라미터로 호출합니다. 개별의 파라미터는 원시적가파라미터와 일치시키기 위해서(때문에) 자동적으로 랩 해제되어 원시적 및 참조 파라미터는 양쪽 모두 필요에 따라서 메소드 호출 변환의 대상이 됩니다.
기본이 되는 메소드가 static 의 경우, 지정된 obj 인수는 무시됩니다. 이 인수가 null 의 경우도 있습니다.

기본이 되는 메소드에 의해 요구되는 가파라미터수가 0 의 경우, 지정된 args 배열은 길이 0 또는 null 가 됩니다.

기본이 되는 메소드가 인스턴스 메소드의 경우, 동적 메소드 look 업을 사용해 호출을 해 타겟 오브젝트의 실행시의 형태에 근거해 오버라이드(override)가 실행됩니다 ( 「The Java Language Specification, Second Edition」의 섹션 15.12. 4.4 를 참조).

기본이 되는 메소드가 static 의 경우, 메소드를 선언한 클래스가 아직 초기화되어 있지 않을 때는 이 클래스가 초기화됩니다.

메소드가 정상적으로 완료하면(자), 메소드에 의한 값이 호출해 측에 돌려주어집니다. 이 값이 원시적형의 경우, 최초로 오브젝트내에 적절한 방법으로 랩 됩니다. 기본이 되는 메소드의 반환값의 형태가 void 의 경우, 호출은 null 를 돌려줍니다.


파라미터:
obj - 기본이 되는 메소드의 호출원의 오브젝트
args - 메소드 호출에 사용되는 인수

반환값: 이 오브젝트가 나타내는 메소드를, 파라미터 args 를 사용해 obj 에 디스팟치 한 결과

예외:
IllegalAccessException -  이 Method 오브젝트가 Java 언어 액세스 제어를 실시해, 기본이 되는 메소드에 액세스 할 수 없는 경우

IllegalArgumentException -   메소드가 인스턴스 메소드이며, 지정된 오브젝트 인수가 기본이 되는 메소드 (또는 그 서브 클래스나 구현측)를 선언하는 클래스 또는 인터페이스의 인스턴스가 아닌 경우, 열매 파라미터수와 가파라미터수가 다른 경우, 원시적 인수의 랩 해제 변환이 실패했을 경우, 또는 랩 해제 후, 메소드 호출 변환에 의해 파라미터치를 대응하는 가파라미터형으로 변환할 수 없는 경우

InvocationTargetException -  기본이 되는 메소드가 예외를 슬로우 하는 경우

NullPointerException -  지정된 오브젝트가 null 로, 메소드가 인스턴스 메소드의 경우

ExceptionInInitializerError -  이 메소드에 의한 초기화가 실패했을 경우

Trackback 0 Comment 3
  1. Favicon of https://dicman.tistory.com BlogIcon dicman 2006.12.28 00:01 신고 address edit & del reply

    훔냥..오늘 DB 관련 교육 받을때 Reflection 나왕게 마는..
    정확히 머 허는거라?

    • Favicon of https://chery.tistory.com BlogIcon chery 2006.12.28 13:12 신고 address edit & del

      메소드를 바로 호출하는 방식이 아니라
      클래스에서 해당 메소드 객체를 가져오고
      그 객체를 실행하고 결과를 오브젝트로 받는거지~

  2. Favicon of http://9262.carisbpress.com BlogIcon Cheap Oakley sunglasses 2013.07.20 23:35 address edit & del reply

    좋으면 좋고 싫으면 싫은 거지, 뭐가 이렇게 어렵고 복잡하냐구