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

將獲取方法轉發給 CompositeDataInvocationHandler。如果有只包含獲取方法(如 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 等於(不必相同)此物件的 CompositeDataProxy 時,它將返回 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.Integerjava.lang.Boolean)的實例中。
返回:
從代理實例的方法調用返回的值。如果介面方法的宣告返回型別是基本型別,則此方法返回的值一定是相應基本包裹物件類別的實例;否則,它一定是可分派到宣告返回型別的型別。如果此方法返回的值為 null 並且介面方法的返回型別是基本型別,則代理實例上的方法調用將拋出 NullPointerException。否則,如果此方法返回的值與上述介面方法的宣告返回型別不相容,則代理實例上的方法調用將拋出 ClassCastException
拋出:
Throwable - 從代理實例上的方法調用拋出的異常。該異常的型別必須可以分派到在介面方法的 throws 子句中宣告的任一異常型別或未經檢查的異常型別 java.lang.RuntimeExceptionjava.lang.Error。如果此方法拋出經過檢查的異常,該異常不可分派到在介面方法的 throws 子句中宣告的任一異常型別,代理實例的方法調用將拋出包含此方法曾拋出的異常的 UndeclaredThrowableException
另請參見:
UndeclaredThrowableException

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only