mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-07-06 09:02:49 +08:00
155 lines
7.5 KiB
HTML
155 lines
7.5 KiB
HTML
<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<String> itemNames = new ArrayList<String>(ct.keySet());</code>
|
||
<code> List<String> itemDescriptions = new ArrayList<String>();</code>
|
||
<code> List<OpenType<?>> itemTypes = new ArrayList<OpenType<?>>();</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<?>[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> |