public class CompositeDataInvocationHandler extends Object implements InvocationHandler
一个InvocationHandler
转发到CompositeData
getter方法。如果你有一个接口只包含getter方法(如String getName()
或boolean isActive()
)那么你可以用与Proxy
类连词这类产生在每次吸气返回相应项的值在一个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()
。
如果是由一个getter定义属性的第一个字母是大写的,那么这个处理程序会首先寻找一个项目中的CompositeData
开始与资本,那么,如果没有找到,一个项目与相应的小写字母或代码点开始。一个叫getNumber()
吸气剂,该处理器将首先寻找一个项目叫做Number
,然后number
。如果吸气称为getnumber()
,那么项目必须叫number
。
如果给invoke
法是法boolean equals(Object)
继承Object
,那么它将返回true当且仅当参数是一个Proxy
的InvocationHandler
也是CompositeDataInvocationHandler
和其支持CompositeData
是平等的(不一定是相同的),如果这个对象给invoke
方法继承自Object
方法int hashCode()
,然后它将返回一个值,与z-e08b4078-321d-4be5-b0de-fafc7de84这个定义一致146:如果按照equals
两个对象是相等的,那么他们也会有同样的hashCode
。
Constructor and Description |
---|
CompositeDataInvocationHandler(CompositeData compositeData)
构建了
CompositeData 支持的处理器。
|
Modifier and Type | Method and Description |
---|---|
CompositeData |
getCompositeData()
返回
CompositeData ,提供构造器。
|
Object |
invoke(Object proxy, 方法 method, Object[] args)
在代理实例上处理方法调用,并返回结果。
|
public CompositeDataInvocationHandler(CompositeData compositeData)
构建了CompositeData
支持的处理器。
compositeData
-
CompositeData
将干将供应信息。
IllegalArgumentException
-如果
compositeData
是空的。
public CompositeData getCompositeData()
CompositeData
,提供构造器。
CompositeData
这个处理器的支持。这是永远不会空。
public Object invoke(Object proxy, 方法 method, Object[] args) throws Throwable
InvocationHandler
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
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.