|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface CompositeDataView
class Java может реализовать этот интерфейс, чтобы указать, как это должно быть преобразовано в a CompositeData платформой MXBean.
Типичный способ использовать этот class состоит в том, чтобы добавить дополнительные элементы к CompositeData в дополнение к тем, которые объявляются в CompositeType предоставленный платформой MXBean. Чтобы сделать это, следует создать другого CompositeType это имеет весь одинаковый элементы плюс Ваши дополнительные элементы.
Например, предположите, что у Вас есть class Measure это состоит из вызванной Строки units и a value это любой a long или a double. Это могло бы быть похожим на это:
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<?>> itemTypes = new ArrayList<OpenType<?>>();
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);
}
}
}
CompositeType это появится в openType поле Descriptor поскольку атрибут или работа этого типа покажут только units элемент, но фактическое CompositeData это сгенерировано, будет иметь обоих units и value.
MXBean| Модификатор и Тип | Метод и Описание |
|---|---|
CompositeData |
toCompositeData(CompositeType ct)
Возвратите a
CompositeData соответствие значениям в этом объекте. |
CompositeData toCompositeData(CompositeType ct)
Возвратите a CompositeData соответствие значениям в этом объекте. Возвращенное значение должно обычно быть экземпляром CompositeDataSupport, или class, который сериализирует как a CompositeDataSupport через a writeReplace метод. Иначе, удаленный клиент, который получает объект, не мог бы быть в состоянии восстановить его.
ct - Ожидаемый CompositeType из возвращенного значения. Если возвращенное значение cd, тогда cd.getCompositeType().equals(ct) должна быть истина. Обычно это будет то, потому что cd a CompositeDataSupport созданный с ct как CompositeType.CompositeData.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92