javax.management.openmbean

接口
异常
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