java.lang.Object
javax.management.openmbean.CompositeDataInvocationHandler
- 所有已实现的接口:
-
InvocationHandler
一个InvocationHandler,将getter方法转发到CompositeData。如果您有一个只包含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"}
);
那么您可以这样构建一个由对象cd支持的实现NamedNumber的对象:
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
-
Constructor Summary
ConstructorsConstructorDescriptionCompositeDataInvocationHandler(CompositeData compositeData) 构造一个由给定CompositeData支持的处理程序。 -
Method Summary
Modifier and TypeMethodDescription返回构造函数提供的CompositeData。处理代理实例上的方法调用并返回结果。
-
Constructor Details
-
CompositeDataInvocationHandler
构造一个由给定
CompositeData支持的处理程序。- 参数:
-
compositeData- 将向getter方法提供信息的CompositeData。 - 抛出:
-
IllegalArgumentException- 如果compositeData为null。
-
-
Method Details
-
getCompositeData
返回构造函数提供的CompositeData。- 返回:
-
此处理程序支持的
CompositeData。永远不会为null。
-
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。 - 参见:
-