|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjavax.management.openmbean.CompositeDataInvocationHandler
public class CompositeDataInvocationHandler
취득 메소드를 CompositeData
에 전송 하는 InvocationHandler
입니다. 인터페이스에 취득 메소드만이 포함되는 경우 (String getName()
나 boolean isActive()
) 등), 이 클래스를 Proxy
클래스와 조합해 사용하는 것으로, 각 취득 메소드가 CompositeData
내의 대응하는 항목의 값을 돌려주는 인터페이스의 구현을 생성할 수 있습니다.
예를 들어, 다음과 같은 인터페이스를 생각합시다.
또,public interface NamedNumber { public int getNumber(); public String getName(); }
CompositeData
는 다음과 같이 구축됩니다.
다음과 같이 해,CompositeData cd = newCompositeDataSupport
( 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
로, 그 InvocationHandler
가 CompositeDataInvocationHandler
이기도 해, 보조 CompositeData
가 이 객체의 CompositeData
와 동일한 (동일한 필요는 없다) 경우 뿐입니다. invoke
에게 건네지는 메소드가,Object
로부터 상속되는 int hashCode()
메소드인 경우, 이 equals
의 정의와 일치하는 값이 돌려주어집니다. equals
에 따라 2 개의 객체가 동일한 경우, 어느쪽이나 같은 hashCode
를 가집니다.
생성자 의 개요 | |
---|---|
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 |
생성자 의 상세 |
---|
public CompositeDataInvocationHandler(CompositeData compositeData)
지정한 CompositeData
를 이용하는 핸들러를 구축합니다.
compositeData
- 취득 메소드에 정보를 제공하는 CompositeData
IllegalArgumentException
- compositeData
가 null 의 경우메소드의 상세 |
---|
public CompositeData getCompositeData()
CompositeData
를 돌려줍니다.
CompositeData
. null 는 불가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
와 같이 적절한 원시형 래퍼 클래스의 인스턴스에 랩 된다
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 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.