- 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 = 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()
的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 方法 描述 CompositeData
getCompositeData()
返回提供给构造函数的CompositeData
。Object
invoke(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
-
-