155 lines
7.5 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="Interface CompositeDataView">Interface CompositeDataView</h2>
</div><div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/> <br/> <pre>public interface <span class="typeNameLabel">CompositeDataView</span></pre>
<div class="block">
<p> <span>一个Java类可以实现此接口以表明它是如何被转化为<code>CompositeData</code>通过MXBean框架。</span> </p>
<p> <span>使用此类的一个典型方法是除了在MXBean框架提供的<code>CompositeType</code>中声明的内容外,还可以向<code>CompositeData</code>添加额外的项目。</span> <span>为此,您必须创建另一个<code>CompositeType</code>具有所有相同的项目,加上额外的项目。</span> </p>
<p> <span>例如,假设你有一个类<code>Measure</code> ,它由一个叫做<code>units</code>的字符串和一个<code>value</code> ,它是一个<code>long</code>或一个<code>double</code></span> <span>它可能看起来像这样:</span> </p>
<pre> <span>public class Measure implements CompositeDataView {
private String units;
private Number value; // a Long or a Double
public Measure(String units, Number value) {
this.units = units;
this.value = value;
}
public static Measure from(CompositeData cd) {
return new Measure((String) cd.get("units"),
(Number) cd.get("value"));
}
public String getUnits() {
return units;
}
// Can't be called getValue(), because Number is not a valid type
// in an MXBean, so the implied "value" property would be rejected.
public Number _getValue() {
return value;
}
public CompositeData toCompositeData(CompositeType ct) {
try {
<code> List&lt;String&gt; itemNames = new ArrayList&lt;String&gt;(ct.keySet());</code>
<code> List&lt;String&gt; itemDescriptions = new ArrayList&lt;String&gt;();</code>
<code> List&lt;OpenType&lt;?&gt;&gt; itemTypes = new ArrayList&lt;OpenType&lt;?&gt;&gt;();</code>
for (String item : itemNames) {
itemDescriptions.add(ct.getDescription(item));
itemTypes.add(ct.getType(item));
}
itemNames.add("value");
itemDescriptions.add("long or double value of the measure");
itemTypes.add((value instanceof Long) ? SimpleType.LONG :
SimpleType.DOUBLE);
CompositeType xct =
new CompositeType(ct.getTypeName(),
ct.getDescription(),
itemNames.toArray(new String[0]),
itemDescriptions.toArray(new String[0]),
itemTypes.toArray(new OpenType&lt;?&gt;[0]));
CompositeData cd =
new CompositeDataSupport(xct,
new String[] {"units", "value"},
new Object[] {units, value});
assert ct.isValue(cd); // check we've done it right
return cd;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}</span> </pre>
<p> <span><code>CompositeType</code>将出现在<code>openType</code>的领域<a href="../../../javax/management/Descriptor.html" title="javax.management中的接口"><code>Descriptor</code></a>这种类型的属性或操作中,只显示<code>units</code>项目,但实际<code>CompositeData</code>所产生将同时拥有<code>units</code><code>value</code></span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.6
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../../javax/management/MXBean.html" title="javax.management中的注释"><code>MXBean</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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="t3"><span><a href="javascript:show(4);">抽象方法</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/CompositeDataView.html#toCompositeData-javax.management.openmbean.CompositeType-">toCompositeData</a></span>(<a href="../../../javax/management/openmbean/CompositeType.html" title="class in javax.management.openmbean">CompositeType</a> ct)</code>
<div class="block">
返回一个对应于该对象中的值的
<code>CompositeData</code>
</div> </td>
</tr>
</tbody>
</table> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="toCompositeData-javax.management.openmbean.CompositeType-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>toCompositeData</h4> <pre><a href="../../../javax/management/openmbean/CompositeData.html" title="interface in javax.management.openmbean">CompositeData</a> toCompositeData(<a href="../../../javax/management/openmbean/CompositeType.html" title="class in javax.management.openmbean">CompositeType</a> ct)</pre>
<div class="block">
<p> <span>返回一个对应于该对象中的值的<code>CompositeData</code></span> <span>返回的值通常应的一个实例<a href="../../../javax/management/openmbean/CompositeDataSupport.html" title="javax.management.openmbean中的类"><code>CompositeDataSupport</code></a> ,或序列化作为一类<code>CompositeDataSupport</code>经由<code>writeReplace</code>方法。</span> <span>否则,接收对象的远程客户端可能无法重构。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>ct</code> - 预期的<code>CompositeType</code>的返回值。</span>
<span>如果返回值为<code>cd</code> ,那么<code>cd.getCompositeType().equals(ct)</code>应为true。</span>
<span>通常这是因为<code>cd</code>是一个<a href="../../../javax/management/openmbean/CompositeDataSupport.html" title="javax.management.openmbean中的类"><code>CompositeDataSupport</code></a>构造的<code>ct</code>作为其<code>CompositeType</code></span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
the
<code>CompositeData</code>.
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>