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 = newCompositeDataSupport
( 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
ConstructorDescriptionCompositeDataInvocationHandler
(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
。 - 参见:
-