JavaTM Platform
Standard Ed. 6

javax.management.openmbean
클래스 CompositeDataInvocationHandler

java.lang.Object 
  상위를 확장 javax.management.openmbean.CompositeDataInvocationHandler
모든 구현된 인터페이스:
InvocationHandler


public class CompositeDataInvocationHandler
extends Object
implements InvocationHandler

취득 메소드를 CompositeData 에 전송 하는 InvocationHandler 입니다. 인터페이스에 취득 메소드만이 포함되는 경우 (String getName()boolean isActive()) 등), 이 클래스를 Proxy 클래스와 조합해 사용하는 것으로, 각 취득 메소드가 CompositeData 내의 대응하는 항목의 값을 돌려주는 인터페이스의 구현을 생성할 수 있습니다.

예를 들어, 다음과 같은 인터페이스를 생각합시다.

   public interface NamedNumber {
       public int getNumber();
       public String getName();
   }
   
또,CompositeData 는 다음과 같이 구축됩니다.
   CompositeData cd =
       new CompositeDataSupport (
           someCompositeType,
           new String[] {"number", "name"},
           new Object[] {5, "five"}
       );
   
다음과 같이 해,NamedNumber 를 구현해, 객체 cd 를 이용하는 객체를 구축할 수 있습니다.
   InvocationHandler handler =
       new CompositeDataInvocationHandler(cd);
   NamedNumber nn = (NamedNumber)
       Proxy.newProxyInstance(NamedNumber.class.getClassLoader(),
                              new Class[] {NamedNumber.class},
                              handler);
   
nn.getNumber() 의 호출에 의해,5 가 돌려주어집니다.

취득 메소드로 정의된 프로퍼티의 최초의 문자가 대문자의 경우, 이 핸들러는 최초로 CompositeData 내에서 대문자로 시작되는 항목을 검색합니다. 발견되지 않는 경우, 대응하는 소문자 또는 코드 포인트로 시작되는 항목을 검색합니다. getNumber() 라는 이름의 취득 메소드의 경우, 핸들러는 최초로 Number 라는 이름의 항목을 검색해, 다음에 number 를 검색합니다. 취득 메소드의 이름이 getnumber() 인 경우, 그 항목명은 number 가 아니면 안됩니다.

invoke 에게 건네지는 메소드가 Object 로부터 상속한 boolean equals(Object) 메소드인 경우, 이것이 true 를 돌려주는 것은, 인수가 Proxy 로, 그 InvocationHandlerCompositeDataInvocationHandler 이기도 해, 보조 CompositeData 가 이 객체의 CompositeData 와 동일한 (동일한 필요는 없다) 경우 뿐입니다. invoke 에게 건네지는 메소드가,Object 로부터 상속되는 int hashCode() 메소드인 경우, 이 equals 의 정의와 일치하는 값이 돌려주어집니다. equals 에 따라 2 개의 객체가 동일한 경우, 어느쪽이나 같은 hashCode 를 가집니다.

도입된 버젼:
1.6

생성자 의 개요
CompositeDataInvocationHandler (CompositeData  compositeData)
          지정한 CompositeData 를 이용하는 핸들러를 구축합니다.
 
메소드의 개요
 CompositeData getCompositeData ()
          생성자 으로 지정된 CompositeData 를 돌려줍니다.
 Object invoke (Object  proxy, Method  method, Object [] args)
          프록시 인스턴스로 메소드 호출을 처리해, 그 결과를 돌려줍니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

CompositeDataInvocationHandler

public CompositeDataInvocationHandler(CompositeData  compositeData)

지정한 CompositeData 를 이용하는 핸들러를 구축합니다.

파라미터:
compositeData - 취득 메소드에 정보를 제공하는 CompositeData
예외:
IllegalArgumentException - compositeData 가 null 의 경우
메소드의 상세

getCompositeData

public CompositeData  getCompositeData()
생성자 으로 지정된 CompositeData 를 돌려줍니다.

반환값:
이 핸들러가 이용하는 CompositeData. null 는 불가

invoke

public Object  invoke(Object  proxy,
                     Method  method,
                     Object [] args)
              throws Throwable 
인터페이스 InvocationHandler 의 기술:
프록시 인스턴스로 메소드 호출을 처리해, 그 결과를 돌려줍니다. 관련한 프록시 인스턴스로 메소드가 불려 가면(자), 이 메소드는 호출해 핸들러로 불려 갑니다.

정의:
인터페이스 InvocationHandler 내의 invoke
파라미터:
proxy - 메소드가 불려 가는 프록시 인스턴스
method - 프록시 인스턴스로 불려 가는 인터페이스 메소드에 대응하는 Method 인스턴스. Method 객체의 선언 클래스는, 이 메소드가 선언된 인터페이스이며, 프록시 클래스가 메소드를 상속하는 프록시 인터페이스의 슈퍼 인터페이스도 있는
args - 프록시 인스턴스에서의 메소드 호출시에게 건네지는 인수치를 포함하는 객체 배열. 인터페이스 메소드가 인수를 취하지 않는 경우,null 가 된다. 원시형 인수는 java.lang.Integer 또는 java.lang.Boolean 와 같이 적절한 원시형 래퍼 클래스의 인스턴스에 랩 된다
반환값:
프록시 인스턴스에서의 메소드 호출로부터의 반환값. 인터페이스 메소드의 선언된 반환값의 형태가 원시형의 경우는, 이 메소드의 반환값은 대응하는 프리미티브(primitive) 래퍼 클래스의 인스턴스가 아니면 안된다. 그렇지 않은 경우, 선언된 반환값의 형태에 할당할 수 있는 형태가 아니면 안된다. 이 메소드에 의한 반환값이 null 로, 인터페이스 메소드의 반환값이 원시형의 경우, 프록시 인스턴스에서의 메소드 호출에 의해 NullPointerException 가 throw 된다. 이외의 케이스로, 이 메소드의 반환값과 상기와 같은 인터페이스 메소드의 선언된 반환값의 형태와의 사이에 호환성이 없는 경우,ClassCastException 는 프록시 인스턴스에서의 메소드 호출에 의해 throw 되게 된다
예외:
Throwable - 프록시 인스턴스에서의 메소드 호출로부터 throw 되는 예외. 이 예외의 타입은, 인터페이스 메소드의 throws 절에 선언되는 예외 타입인가, 또는, 체크되지 않는 예외 타입의 java.lang.RuntimeException 또는 java.lang.Error 에 할당할 수 없으면 안 된다. 이 메소드에 의해 throw 되는 체크 예외가, 인터페이스 메소드의 throws 절에 선언된 예외 타입에 할당할 수 없는 경우, 이 메소드가 throw 한 예외를 포함하는 UndeclaredThrowableException 가 프록시 인스턴스에서의 메소드 호출에 의해 throw 되게 되는
관련 항목:
UndeclaredThrowableException

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.