uTools-Manuals/docs/java/javax/management/MBeanServerInvocationHandler.html

383 lines
25 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
</div>
<h2 class="title" title="Class MBeanServerInvocationHandler">Class MBeanServerInvocationHandler</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.MBeanServerInvocationHandler</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">MBeanServerInvocationHandler</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>将MBean管理界面中的方法通过MBean服务器转发到MBean。</span> </p>
<p> <span>给定一个<a href="../../javax/management/MBeanServerConnection.html" title="javax.management中的接口"><code>MBeanServerConnection</code></a> ,该<a href="../../javax/management/ObjectName.html" title="javax.management中的类"><code>ObjectName</code></a>一个MBean的该MBean服务器中并且Java接口<code>Intf</code>描述使用Standard MBean或MXBean的模式的MBean的管理接口这个类可以用来构建一个代理在MBean 。</span> <span>代理实现接口<code>Intf</code> 使得其所有方法都通过MBean服务器转发到MBean。</span> </p>
<p> <span>如果<code>InvocationHandler</code>用于MXBean则将方法的参数从MXBean接口中声明的类型转换为相应的映射类型并将返回值从映射类型转换为声明类型。</span> <span>例如,用该方法</span> <br/> <code>public List&lt;String&gt; reverse(List&lt;String&gt; list);</code> <br/> <span>并考虑到为映射类型<code>List&lt;String&gt;</code><code>String[]</code> ,将呼叫<code>proxy.reverse(someList)</code>将转换<code>someList</code><code>List&lt;String&gt;</code><code>String[]</code> 调用MBean操作<code>reverse</code> ,然后转换返回<code>String[]</code><code>List&lt;String&gt;</code></span> </p>
<p> <span>当使用此调用处理程序在代理上调用时Object.toStringObject.hashCode或Object.equalsObject方法仅在代理的MBean中出现时才转发到MBean服务器代理接口之一。</span> <span>对于使用<a href="../../javax/management/JMX.html#newMBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-"><code>JMX.newMBeanProxy</code></a><a href="../../javax/management/JMX.html#newMXBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-"><code>JMX.newMXBeanProxy</code></a>创建的代理这意味着该方法必须出现在标准MBean或MXBean接口中。</span> <span>否则这些方法具有以下行为:</span> </p>
<ul>
<li> <span>toString返回代理的字符串表示形式</span> </li>
<li> <span>hashCode返回代理的哈希码使得两个相等的代理具有相同的哈希码</span> </li>
<li> <span>如果Object参数与此代理具有相同的代理类则equalsObject将返回true而MBeanServerInvocationHandler具有相同的MBeanServerConnection和ObjectName;</span> <span>如果<code>MBeanServerInvocationHandler</code>之一是用<code></code>参数构造的那么另一个必须用equals相同的<code></code> <code>equals</code>才能返回true。</span> </li>
</ul>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.5
</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/MBeanServerInvocationHandler.html#MBeanServerInvocationHandler-javax.management.MBeanServerConnection-javax.management.ObjectName-">MBeanServerInvocationHandler</a></span>(<a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> connection, <a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> objectName)</code>
<div class="block">
调用处理程序将方法通过MBean服务器转发到标准MBean。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../javax/management/MBeanServerInvocationHandler.html#MBeanServerInvocationHandler-javax.management.MBeanServerConnection-javax.management.ObjectName-boolean-">MBeanServerInvocationHandler</a></span>(<a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> connection, <a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> objectName, boolean isMXBean)</code>
<div class="block">
调用处理程序可以将方法通过MBean服务器转发到标准MBean或MXBean。
</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="t1"><span><a href="javascript:show(1);">静态方法</a></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/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/management/MBeanServerInvocationHandler.html#getMBeanServerConnection--">getMBeanServerConnection</a></span>()</code>
<div class="block">
使用此处理程序的代理方法转发的MBean服务器连接。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code><a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/management/MBeanServerInvocationHandler.html#getObjectName--">getObjectName</a></span>()</code>
<div class="block">
MBean服务器中转发方法的MBean的名称。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<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/MBeanServerInvocationHandler.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>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/management/MBeanServerInvocationHandler.html#isMXBean--">isMXBean</a></span>()</code>
<div class="block">
如果为true则代理为MXBean适当的映射应用于方法参数和返回值。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>static &lt;T&gt; T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/management/MBeanServerInvocationHandler.html#newProxyInstance-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-boolean-">newProxyInstance</a></span>(<a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> connection, <a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> objectName, <a href="../../java/lang/Class.html" title="class in java.lang"></a>&lt;T&gt; interfaceClass, boolean notificationBroadcaster)</code>
<div class="block">
通过将其方法通过给定的MBean服务器转发到指定的MBean来返回实现给定接口的代理。
</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="MBeanServerInvocationHandler-javax.management.MBeanServerConnection-javax.management.ObjectName-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>MBeanServerInvocationHandler</h4> <pre>public MBeanServerInvocationHandler(<a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> connection,
<a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> objectName)</pre>
<div class="block">
<p> <span>调用处理程序将方法通过MBean服务器转发到标准MBean。</span> <span>可以调用此构造函数,而不是依赖于<a href="../../javax/management/JMX.html#newMBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-"><code>JMX.newMBeanProxy</code></a> ,例如,如果您需要将不同的<code>ClassLoader</code> <a href="../../java/lang/ClassLoader.html" title="java.lang中的类">提供</a><a href="../../java/lang/reflect/Proxy.html#newProxyInstance-java.lang.ClassLoader-java.lang.Class:A-java.lang.reflect.InvocationHandler-"><code>Proxy.newProxyInstance</code></a></span> </p>
<p> <span>此构造函数不适用于MXBean。</span> <span>使用<a href="../../javax/management/MBeanServerInvocationHandler.html#MBeanServerInvocationHandler-javax.management.MBeanServerConnection-javax.management.ObjectName-boolean-"><code>MBeanServerInvocationHandler(MBeanServerConnection, ObjectName, boolean)</code></a></span> <span>此构造函数相当于<code>new MBeanServerInvocationHandler(connection, objectName, false)</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>connection</code> - 使用此处理程序的代理的所有方法将
<code>connection</code>的MBean服务器连接。
</dd>
<dd>
<code>objectName</code> - 要转发哪些方法的MBean服务器内的MBean的名称。
</dd>
</dl> </li>
</ul> <a name="MBeanServerInvocationHandler-javax.management.MBeanServerConnection-javax.management.ObjectName-boolean-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>MBeanServerInvocationHandler</h4> <pre>public MBeanServerInvocationHandler(<a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> connection,
<a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> objectName,
boolean isMXBean)</pre>
<div class="block">
<p> <span>调用处理程序可以将方法通过MBean服务器转发到标准MBean或MXBean。</span> <span>可以调用此构造函数,而不是依赖于<a href="../../javax/management/JMX.html#newMXBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-"><code>JMX.newMXBeanProxy</code></a> ,例如,如果您需要提供不同的<a href="../../java/lang/ClassLoader.html" title="java.lang中的类"><code>ClassLoader</code></a><a href="../../java/lang/reflect/Proxy.html#newProxyInstance-java.lang.ClassLoader-java.lang.Class:A-java.lang.reflect.InvocationHandler-"><code>Proxy.newProxyInstance</code></a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>connection</code> - 使用此处理程序的代理的所有方法都将转发的MBean服务器连接。
</dd>
<dd>
<code>objectName</code> - MBean服务器中要转发哪些方法的MBean的名称。
</dd>
<dd>
<span><code>isMXBean</code> - 如果为true则代理为<a href="../../javax/management/MXBean.html" title="javax.management中的注释"><code>MXBean</code></a> ,适当的映射将应用于方法参数和返回值。</span>
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getMBeanServerConnection--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getMBeanServerConnection</h4> <pre>public <a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> getMBeanServerConnection()</pre>
<div class="block">
<p>使用此处理程序的代理方法转发的MBean服务器连接。 </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
MBean服务器连接。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul> <a name="getObjectName--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getObjectName</h4> <pre>public <a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> getObjectName()</pre>
<div class="block">
<p> MBean服务器中转发方法的MBean的名称。 </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
对象名称。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul> <a name="isMXBean--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>isMXBean</h4> <pre>public boolean isMXBean()</pre>
<div class="block">
<p>如果为true则代理为MXBean适当的映射应用于方法参数和返回值。 </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
代理是否用于MXBean。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
</dl> </li>
</ul> <a name="newProxyInstance-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>newProxyInstance</h4> <pre>public static &lt;T&gt; T newProxyInstance(<a href="../../javax/management/MBeanServerConnection.html" title="interface in javax.management">MBeanServerConnection</a> connection,
<a href="../../javax/management/ObjectName.html" title="class in javax.management">ObjectName</a> objectName,
<a href="../../java/lang/Class.html" title="class in java.lang"></a>&lt;T&gt; interfaceClass,
boolean notificationBroadcaster)</pre>
<div class="block">
<p> <span>通过将其方法通过给定的MBean服务器转发到指定的MBean来返回实现给定接口的代理。</span> <span>从1.6开始,方法<a href="../../javax/management/JMX.html#newMBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-"><code>JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class)</code></a><a href="../../javax/management/JMX.html#newMBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-boolean-"><code>JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean)</code></a>优于该方法。</span> </p>
<p> <span>此方法相当于<a href="../../java/lang/reflect/Proxy.html#newProxyInstance-java.lang.ClassLoader-java.lang.Class:A-java.lang.reflect.InvocationHandler-"><code>Proxy.newProxyInstance</code></a> <code>(interfaceClass.getClassLoader(), interfaces, handler)</code></span> <span>这里<code>handler</code>是的结果<a href="../../javax/management/MBeanServerInvocationHandler.html#MBeanServerInvocationHandler-javax.management.MBeanServerConnection-javax.management.ObjectName-boolean-"><code>new MBeanServerInvocationHandler(connection, objectName)</code></a><code>interfaces</code>是具有如果一个元素的数组<code>notificationBroadcaster</code>为假以及两个如果这是真的。</span> <span><code>interfaces</code>的第一个元素是<code>interfaceClass</code> ,第二个元素(如果有的话)是<code>NotificationEmitter.class</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数类型</span>
</dt>
<dd>
<code>T</code> - 允许编译器知道如果
<code>interfaceClass</code>参数是
<code>MyMBean.class</code> ,那么返回类型是
<code>MyMBean</code>
</dd>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>connection</code> - 要转发的MBean服务器。
</dd>
<dd>
<code>objectName</code> - 要转发到的
<code>connection</code>内的MBean的名称。
</dd>
<dd>
<code>interfaceClass</code> - MBean导出的管理界面也将由返回的代理实现。
</dd>
<dd>
<span><code>notificationBroadcaster</code> -使返回的代理实现<a href="../../javax/management/NotificationEmitter.html" title="javax.management中的接口"><code>NotificationEmitter</code></a>经由其方法转发<code>connection</code></span>
<span>要在通话<a href="../../javax/management/NotificationBroadcaster.html#addNotificationListener-javax.management.NotificationListener-javax.management.NotificationFilter-java.lang.Object-"><code>NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)</code></a>上的代理将导致调用<a href="../../javax/management/MBeanServerConnection.html#addNotificationListener-javax.management.ObjectName-javax.management.NotificationListener-javax.management.NotificationFilter-java.lang.Object-"><code>MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)</code></a> ,同样对于其他方法<a href="../../javax/management/NotificationBroadcaster.html" title="javax.management中的接口"><code>NotificationBroadcaster</code></a><a href="../../javax/management/NotificationEmitter.html" title="javax.management中的接口"><code>NotificationEmitter</code></a></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的代理实例。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../javax/management/JMX.html#newMBeanProxy-javax.management.MBeanServerConnection-javax.management.ObjectName-java.lang.Class-boolean-"><code>JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean)</code></a>
</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>