java.lang.Object
javax.management.openmbean.CompositeDataInvocationHandler
- 所有已实现的接口:
InvocationHandler
将 getter 方法转发给 CompositeData 的 InvocationHandler 。如果您的接口仅包含 getter 方法(例如 String getName() 或 boolean isActive() ),那么您可以将此类与 Proxy 类结合使用来生成接口的实现,其中每个 getter 返回 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.
如果 getter 定义的属性的第一个字母是大写字母,则此处理程序将首先在 CompositeData 中查找以大写字母开头的项目,然后,如果找不到,则查找以相应小写字母开头的项目或代码点。对于名为 getNumber() 的 getter,处理程序将首先查找名为 Number 的项目,然后查找 number。如果 getter 称为 getnumber() ,则该项目必须称为 number 。
如果提供给 invoke 的方法是从 Object 继承的方法 boolean equals(Object) ,那么当且仅当参数是一个 Proxy 其 InvocationHandler 也是一个 CompositeDataInvocationHandler 并且其支持 CompositeData 与该对象的支持相等(不一定相同)时,它将返回 true。如果给 invoke 的方法是继承自 Object 的方法 int hashCode(),那么它将返回一个与 equals 的定义一致的值:如果根据 equals 两个对象相等,那么它们将具有相同的 hashCode 。
- 自从:
- 1.6
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述返回提供给构造函数的CompositeData。处理代理实例上的方法调用并返回结果。
-
构造方法详细信息
-
CompositeDataInvocationHandler
构造一个由给定的
CompositeData支持的处理程序。- 参数:
compositeData- 将向 getter 提供信息的CompositeData。- 抛出:
IllegalArgumentException- 如果compositeData为空。
-
-
方法详情
-
getCompositeData
返回提供给构造函数的CompositeData。- 返回:
-
该处理程序支持的
CompositeData。这永远不会为空。
-
invoke
从接口InvocationHandler复制的描述处理代理实例上的方法调用并返回结果。当在与其关联的代理实例上调用方法时,将在调用处理程序上调用此方法。- 指定者:
invoke在接口InvocationHandler中- 参数:
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将由方法调用抛出代理实例。- 参见:
-