uTools-Manuals/docs/java/javax/management/openmbean/CompositeDataInvocationHandler.html

259 lines
15 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
compact3
</div>
<div class="subTitle">
javax.management.openmbean
</div>
<h2 class="title" title="Class CompositeDataInvocationHandler">Class CompositeDataInvocationHandler</h2>
</div><div class="contentContainer">
<ul class="inheritance">
<li><a href="../../../java/lang/Object.html" title="class in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>javax.management.openmbean.CompositeDataInvocationHandler</li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Implemented Interfaces:
</dt>
<dd>
<span><a href="../../../java/lang/reflect/InvocationHandler.html" title="java.lang.reflect中的接口">InvocationHandler</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public class <span class="typeNameLabel">CompositeDataInvocationHandler</span>
extends <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a>
implements <a href="../../../java/lang/reflect/InvocationHandler.html" title="interface in java.lang.reflect">InvocationHandler</a></pre>
<div class="block">
<p> <span>一个<a href="../../../java/lang/reflect/InvocationHandler.html" title="java.lang.reflect中的接口"><code>InvocationHandler</code></a> 它将getter方法转发到一个<a href="../../../javax/management/openmbean/CompositeData.html" title="javax.management.openmbean中的接口"><code>CompositeData</code></a></span> <span>如果你有只包含吸气剂的方法(例如接口<code>String getName()</code><code>boolean isActive()</code> ),则可以结合使用这个类与<a href="../../../java/lang/reflect/Proxy.html" title="class java.lang.reflect"><code>Proxy</code></a>类以产生其中每个吸气剂返回对应的项的一个的值的接口的实现<code>CompositeData</code></span> </p>
<p> <span>例如,假设你有一个这样的接口:</span> </p>
<blockquote>
<span><pre>
public interface NamedNumber {
public int getNumber();
public String getName();
}
</pre></span>
</blockquote>
<span>和一个<code>CompositeData</code>构造如下:</span>
<blockquote>
<span><pre>
CompositeData cd =
new <a href="../../../javax/management/openmbean/CompositeDataSupport.html" title="class in javax.management.openmbean"><code>CompositeDataSupport</code></a>(
someCompositeType,
new String[] {"number", "name"},
new Object[] {<b>5</b>, "five"}
);
</pre></span>
</blockquote>
<span>那么你可以构造一个实现NamedNumber <code>NamedNumber</code>对象支持的对象<code>cd</code>如下所示:</span>
<blockquote>
<span><pre>
InvocationHandler handler =
new CompositeDataInvocationHandler(cd);
NamedNumber nn = (NamedNumber)
Proxy.newProxyInstance(NamedNumber.class.getClassLoader(),
new Class[] {NamedNumber.class},
handler);
</pre></span>
</blockquote>
<span>然后拨打<code>nn.getNumber()</code>将返回<b>5</b></span>
<p> <span>如果由吸气剂定义的财产的第一个字母是大写字母,那么这个处理程序将首先<code>CompositeData</code> CompositeData中以资本开头的项目然后如果没有找到则以相应的小写字母开头的项目代码点。</span> <span>对于一个名为<code>getNumber()</code>的getter处理程序将首先查找一个名为<code>Number</code>的项,然后查找<code>number</code></span> <span>如果吸气剂被称为<code>getnumber()</code> ,则该项目必须称为<code>number</code></span> </p>
<p> <span>如果给予方法<a href="../../../javax/management/openmbean/CompositeDataInvocationHandler.html#invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-"><code>invoke</code></a>是方法<code>boolean equals(Object)</code>从继承<code>Object</code> 则它将当且仅当所述参数是一个返回true <code>Proxy</code><code>InvocationHandler</code>也是<code>CompositeDataInvocationHandler</code> ,其背衬<code>CompositeData</code>等于(不一定相同)此对象的。</span> <span>如果给出<code>invoke</code>的方法是从<code>Object</code>的方法<code>int hashCode()</code> 那么它将返回与equals的这个定义一致的<code>equals</code> :如果两个对象根据<code>equals</code> ,那么它们将具有相同的<code>hashCode</code></span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- --> </a> <h3>构造方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Constructor Summary table, listing constructors, and an explanation">
<caption>
<span>构造方法</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../javax/management/openmbean/CompositeDataInvocationHandler.html#CompositeDataInvocationHandler-javax.management.openmbean.CompositeData-">CompositeDataInvocationHandler</a></span>(<a href="../../../javax/management/openmbean/CompositeData.html" title="interface in javax.management.openmbean">CompositeData</a> compositeData)</code>
<div class="block">
构造一个由给定的
<code>CompositeData</code>支持的处理程序。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t4"><span><a href="javascript:show(8);">具体的方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code><a href="../../../javax/management/openmbean/CompositeData.html" title="interface in javax.management.openmbean">CompositeData</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/management/openmbean/CompositeDataInvocationHandler.html#getCompositeData--">getCompositeData</a></span>()</code>
<div class="block">
返回
<code>CompositeData</code>这是提供给构造。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code><a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/management/openmbean/CompositeDataInvocationHandler.html#invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">invoke</a></span>(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> proxy, <a href="../../../java/lang/reflect/Method.html" title="class in java.lang.reflect">方法</a> method, <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a>[] args)</code>
<div class="block">
处理代理实例上的方法调用并返回结果。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> </a> <h3>Methods inherited from class java.lang.<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a></h3> <code><a href="../../../java/lang/Object.html#clone--">clone</a>, <a href="../../../java/lang/Object.html#equals-java.lang.Object-">equals</a>, <a href="../../../java/lang/Object.html#finalize--">finalize</a>, <a href="../../../java/lang/Object.html#getClass--">getClass</a>, <a href="../../../java/lang/Object.html#hashCode--">hashCode</a>, <a href="../../../java/lang/Object.html#notify--">notify</a>, <a href="../../../java/lang/Object.html#notifyAll--">notifyAll</a>, <a href="../../../java/lang/Object.html#toString--">toString</a>, <a href="../../../java/lang/Object.html#wait--">wait</a>, <a href="../../../java/lang/Object.html#wait-long-">wait</a>, <a href="../../../java/lang/Object.html#wait-long-int-">wait</a></code></li>
</ul> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="CompositeDataInvocationHandler-javax.management.openmbean.CompositeData-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>CompositeDataInvocationHandler</h4> <pre>public CompositeDataInvocationHandler(<a href="../../../javax/management/openmbean/CompositeData.html" title="interface in javax.management.openmbean">CompositeData</a> compositeData)</pre>
<div class="block">
<p>构造一个由给定的<code>CompositeData</code>支持的处理程序。 </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>compositeData</code> -
<code>CompositeData</code>提供信息的CompositeData。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>compositeData</code>为空。
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getCompositeData--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getCompositeData</h4> <pre>public <a href="../../../javax/management/openmbean/CompositeData.html" title="interface in javax.management.openmbean">CompositeData</a> getCompositeData()</pre>
<div class="block">
返回
<code>CompositeData</code>这是提供给构造。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>这个处理程序支持的<code>CompositeData</code></span>
<span>这从来不为空。</span>
</dd>
</dl> </li>
</ul> <a name="invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>invoke</h4> <pre>public <a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> invoke(<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a> proxy,
<a href="../../../java/lang/reflect/Method.html" title="class in java.lang.reflect">方法</a> method,
<a href="../../../java/lang/Object.html" title="class in java.lang">Object</a>[] args)
throws <a href="../../../java/lang/Throwable.html" title="class in java.lang">Throwable</a></pre>
<div class="block">
<span class="descfrmTypeLabel">从接口复制: <code><a href="../../../java/lang/reflect/InvocationHandler.html#invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">InvocationHandler</a></code></span>
</div>
<div class="block">
<span>处理代理实例上的方法调用并返回结果。</span>
<span>当在与之关联的代理实例上调用方法时,将在调用处理程序中调用此方法。</span>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">Specified by:</span>
</dt>
<dd>
<code><a href="../../../java/lang/reflect/InvocationHandler.html#invoke-java.lang.Object-java.lang.reflect.Method-java.lang.Object:A-">invoke</a></code>在接口
<code><a href="../../../java/lang/reflect/InvocationHandler.html" title="interface in java.lang.reflect">InvocationHandler</a></code>
</dd>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>proxy</code> - 调用该方法的代理实例
</dd>
<dd>
<span><code>method</code> -所述<code>方法</code>对应于调用代理实例上的接口方法的实例。</span>
<span><code>方法</code>对象的声明类将是方法声明的接口,它可以是代理接口的超级接口,代理类继承方法。</span>
</dd>
<dd>
<span><code>args</code> -包含的方法调用传递代理实例的参数值的对象的阵列,或<code>null</code>如果接口方法没有参数。</span>
<span>原始类型的参数包含在适当的原始包装器类的实例中,例如<code>java.lang.Integer</code><code>java.lang.Boolean</code></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<span>从代理实例上的方法调用返回的值。</span>
<span>如果接口方法的声明返回类型是原始类型,则此方法返回的值必须是对应的基本包装类的实例;</span>
<span>否则,它必须是可声明返回类型的类型。</span>
<span>如果此方法返回的值是<code>null</code>和接口方法的返回类型是基本类型,那么<code>NullPointerException</code>将由代理实例的方法调用抛出。</span>
<span>如上所述,如果此方法返回的值,否则不会与接口方法的声明的返回类型兼容,一个<code>ClassCastException</code>将代理实例的方法调用将抛出。</span>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<span><code><a href="../../../java/lang/Throwable.html" title="class in java.lang">Throwable</a></code> - 从代理实例上的方法调用抛出的异常。</span>
<span>异常类型必须可以分配给接口方法的<code>throws</code>子句中声明的任何异常类型<code>java.lang.RuntimeException</code>检查的异常类型<code>java.lang.RuntimeException</code><code>java.lang.Error</code></span>
<span>如果检查的异常是由这种方法是不分配给任何的中声明的异常类型<code>throws</code>接口方法的子句,则一个<a href="../../../java/lang/reflect/UndeclaredThrowableException.html" title="class java.lang.reflect"><code>UndeclaredThrowableException</code></a>包含有由该方法抛出的异常将通过在方法调用抛出代理实例。</span>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../java/lang/reflect/UndeclaredThrowableException.html" title="class java.lang.reflect"><code>UndeclaredThrowableException</code></a></span>
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>