JavaTM 2 Platform
Standard Ed. 6

javax.management.openmbean
介面 CompositeDataView


public interface CompositeDataView

Java 類別可以實作此介面,以指示如何通過 MXBean 框架將其轉換為 CompositeData

使用此類別的典型方式是,除了已經在 MXBean 框架提供的 CompositeType 中宣告的項外,還要向 CompositeData 添加額外的項。要做到這一點,必須創建另一個 CompositeType,其中包含所有相同的項以及額外的項。

例如,假定您有一個由名為 units 的 String 和一個 value(可以是 longdouble)組成的 Measure 類別。其形式可能如下所示:

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 {
List<String> itemNames = new ArrayList<String>(ct.keySet());
List<String> itemDescriptions = new ArrayList<String>();
List<OpenType&lt;?&gt;&gt; itemTypes = new ArrayList<OpenType&lt;?&gt;&gt;();
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);
         }
     }
 }
 

將出現在用於此型別的屬性或操作的 DescriptoropenType 欄位中的 CompositeType 將只顯示 units 項,但產生的實際 CompositeData 將既包含 units 又包含 value

從以下版本開始:
1.6
另請參見:
MXBean

方法摘要
 CompositeData toCompositeData(CompositeType ct)
          返回對應於此物件中的值的 CompositeData
 

方法詳細資訊

toCompositeData

CompositeData toCompositeData(CompositeType ct)

返回對應於此物件中的值的 CompositeData。返回的值通常應該是一個 CompositeDataSupport 實例,或通過 writeReplace 方法序列化為一個 CompositeDataSupport 的類別。否則,接收物件的遠端客戶端可能無法重新建構它。

參數:
ct - 返回值的期望 CompositeType。如果返回值是 cd,則 cd.getCompositeType().equals(ct) 應該為 true。通常這是因為 cd 是一個通過將 ct 作為其 CompositeType 建構而成的 CompositeDataSupport
返回:
CompositeData

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only