CompositeData не имеет метода keys ()?

Я использую JMX для сохранения некоторой диагностической информации из удаленного процесса. Взгляд на интерфейс в jconsole показывает, что тип возвращаемого значения - CompositeData (данные фактически возвращаются как CompositeDataSupport). Я хочу вывести все пары ключ / значение, связанные с этим объектом.

Проблема в том, что в интерфейсе просто есть метод values ​​() без возможности получения ключей. Я что-то упустил? Есть ли другой способ подойти к этой задаче?

Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
0
2 695
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я не ошибаюсь, ты мог бы сделать

Set< String > keys = cData.getCompositeType().keySet();

(учитывая, что cData является объектом CompositeData)

http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/CompositeType.html#keySet ()

Вы можете найти более полный пример с этим небольшая программа, которая печатает атрибуты всех JVM MBean

В частности:

StringBuffer writeCompositeData(StringBuffer buffer, 
            String prefix, String name, CompositeData data) {
        if (data == null)
            return writeSimple(buffer,prefix,name,null,true);
        writeSimple(buffer,prefix,name,"CompositeData("+
                data.getCompositeType().getTypeName()+")",true);
        buffer.append(prefix).append("{").append("\n");
        final String fieldprefix = prefix + " ";
        for (String key : data.getCompositeType().keySet()) {
            write(buffer,fieldprefix,name+"."+key,data.get(key));
        }
        buffer.append(prefix).append("}").append("\n");
        return buffer;
    }

Часть:

for (String key : data.getCompositeType().keySet()) {
    [...] data.get(key) [...];
}

быть тем, что вам нужно.

Другие вопросы по теме