- java.lang.Object
-
- javax.management.openmbean.CompositeDataInvocationHandler
-
- All Implemented Interfaces:
-
InvocationHandler
public class CompositeDataInvocationHandler extends Object implements InvocationHandler
一个
InvocationHandler,将getter方法转发到一个CompositeData。 如果你有一个仅包含getter方法的接口(例如String getName()或boolean isActive()),那么可以将这个类与Proxy类一起使用,以生成接口的实现,每个getter返回CompositeData相应项的CompositeData。例如,假设你有一个这样的接口:
和一个public interface NamedNumber { public int getNumber(); public String getName(); }CompositeData构造如下:
那么你可以构造一个实现CompositeData cd = newCompositeDataSupport( 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()的getter,处理程序将首先查找一个名为Number的项,然后查找number。 如果吸气剂称为getnumber(),则该项目必须称为number。如果给出
invoke的方法boolean equals(Object)继承自Object的方法boolean equals(Object),那么当且仅当该参数是Proxy其InvocationHandler也是CompositeDataInvocationHandler并且其背景CompositeData与该对象的等同(不一定相同)时将返回true。 如果给予invoke的方法int hashCode()继承自Object的方法int hashCode(),则它将返回与equals此定义一致的值:如果两个对象根据equals相等,则它们将具有相同的hashCode。- 从以下版本开始:
- 1.6
-
-
构造方法摘要
构造方法 Constructor 描述 CompositeDataInvocationHandler(CompositeData compositeData)构造由给定的CompositeData支持的处理程序。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 CompositeDatagetCompositeData()返回提供给构造函数的CompositeData。Objectinvoke(Object proxy, 方法 method, Object[] args)处理代理实例上的方法调用并返回结果。
-
-
-
构造方法详细信息
-
CompositeDataInvocationHandler
public CompositeDataInvocationHandler(CompositeData compositeData)
构造由给定的
CompositeData支持的处理程序。- 参数
-
compositeData-CompositeData将向CompositeData提供信息。 - 异常
-
IllegalArgumentException- 如果compositeData为空。
-
-
方法详细信息
-
getCompositeData
public CompositeData getCompositeData()
返回提供给构造函数的CompositeData。- 结果
-
这个处理程序支持的
CompositeData。 这从来不为空。
-
invoke
public Object invoke(Object proxy, 方法 method, Object[] args) throws Throwable
说明从接口InvocationHandler复制处理代理实例上的方法调用并返回结果。 当在与之关联的代理实例上调用方法时,将在调用处理程序中调用此方法。- Specified by:
-
invoke在接口InvocationHandler - 参数
-
proxy- 调用该方法的代理实例 -
method- 对应于在代理实例上调用的接口方法的方法实例。方法对象的声明类将是方法声明的接口,它可以是代理类继承方法的代理接口的超级接口。 -
args- 包含代理实例上方法调用中传递的参数值的对象数组,如果接口方法不带参数,null。 原始类型的参数包含在适当的原始包装器类的实例中,例如java.lang.Integer或java.lang.Boolean。 - 结果
-
从代理实例上的方法调用返回的值。
如果接口方法的声明返回类型是原始类型,则此方法返回的值必须是对应的基本包装类的实例;
否则,它必须是可声明返回类型的类型。
如果此方法返回的值为
null,并且接口方法的返回类型是原始的,那么代理实例上的方法调用将抛出一个NullPointerException。 如果由此方法返回的值与接口方法声明的返回类型不兼容,则代理实例上的方法调用将抛出ClassCastException。 - 异常
-
Throwable- 从代理实例上的方法调用抛出的异常。 异常类型必须可以分配给接口方法的throws子句中声明的任何异常类型或未检查的异常类型java.lang.RuntimeException或java.lang.Error。 如果此方法抛出一个检查的异常,该方法不能分配给接口方法的throws子句中声明的任何异常类型,则包含此方法抛出的异常的UndeclaredThrowableException将被引用在方法调用代理实例。 - 另请参见:
-
UndeclaredThrowableException
-
-