JavaTM 2 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),則當且僅當參數是一個其 InvocationHandler 也是 CompositeDataInvocationHandler 且其後備 CompositeData 等於(不必相同)此物件的 CompositeData 的 Proxy 時,它將返回 true。如果為 invoke 提供的方法是從 Object 繼承的方法 int hashCode(),那麼它將返回一個與 equals 的定義一致的值:如果根據 equals 判斷兩個物件是相等的,則它們將具有相同的 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)的實例中。
返回:
從代理實例的方法調用返回的值。如果介面方法的宣告返回型別是基本型別,則此方法返回的值一定是相應基本包裹物件類別的實例;否則,它一定是可分派到宣告返回型別的型別。如果此方法返回的值為 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。