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 =
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()。
如果是由一个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.