|
JavaTM 2 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),則當且僅當參數是一個其 InvocationHandler 也是 CompositeDataInvocationHandler 且其後備 CompositeData 等於(不必相同)此物件的 CompositeData 的 Proxy 時,它將返回 true。如果為 invoke 提供的方法是從 Object 繼承的方法 int hashCode(),那麼它將返回一個與 equals 的定義一致的值:如果根據 equals 判斷兩個物件是相等的,則它們將具有相同的 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 中的 invokeproxy - 在其上調用方法的代理實例method - 對應於在代理實例上調用的介面方法的 Method 實例。Method 物件的宣告類別將是在其中宣告方法的介面,該介面可以是代理類別賴以繼承方法的代理介面的父級介面。args - 套件含傳入代理實例上方法調用的參數值的物件陣列,如果介面方法不使用參數,則為 null。基本型別的參數被包裹在適當基本外覆器類別(如 java.lang.Integer 或 java.lang.Boolean)的實例中。
null 並且介面方法的返回型別是基本型別,則代理實例上的方法調用將拋出 NullPointerException。否則,如果此方法返回的值與上述介面方法的宣告返回型別不相容,則代理實例上的方法調用將拋出 ClassCastException。
Throwable - 從代理實例上的方法調用拋出的異常。該異常的型別必須可以分派到在介面方法的 throws 子句中宣告的任一異常型別或未經檢查的異常型別 java.lang.RuntimeException 或 java.lang.Error。如果此方法拋出經過檢查的異常,該異常不可分派到在介面方法的 throws 子句中宣告的任一異常型別,代理實例的方法調用將拋出包含此方法曾拋出的異常的 UndeclaredThrowableException。UndeclaredThrowableException
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。