Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface CompositeDataView
Класс Java может реализовать этот интерфейс, чтобы указать, как это должно быть преобразовано в a CompositeData
платформой MXBean.
Типичный способ использовать этот класс состоит в том, чтобы добавить дополнительные элементы к CompositeData
в дополнение к тем, которые объявляются в CompositeType
предоставленный платформой MXBean. Чтобы сделать это, следует создать другого CompositeType
это имеет весь одинаковый элементы плюс Ваши дополнительные элементы.
Например, предположите, что у Вас есть класс 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
, или класс, который сериализирует как a CompositeDataSupport
через a writeReplace
метод. Иначе, удаленный клиент, который получает объект, не мог бы быть в состоянии восстановить его.
ct
- Ожидаемый CompositeType
из возвращенного значения. Если возвращенное значение cd
, тогда cd.getCompositeType().equals(ct)
должна быть истина. Обычно это будет то, потому что cd
a CompositeDataSupport
созданный с ct
как CompositeType
.CompositeData
.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.