CompositeData non ha un metodo keys ()?
-
06-07-2019 - |
Domanda
Sto usando JMX per salvare alcune informazioni diagnostiche da un processo remoto. Guardando l'interfaccia in jconsole mostra che il tipo restituito è CompositeData (i dati in realtà tornano come CompositeDataSupport ). Voglio produrre tutte le coppie chiave / valore associate a questo oggetto.
Il problema è che l'interfaccia sembra avere solo " valori () " metodo senza modo di ottenere le chiavi. Mi sto perdendo qualcosa qui? C'è un altro modo di affrontare questo compito?
Grazie!
Soluzione
Se non sbaglio potresti farlo
Set< String > keys = cData.getCompositeType().keySet();
(dato che cData è un oggetto CompositeData)
http: //java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/CompositeType.html#keySet ()
Altri suggerimenti
Puoi trovare un esempio più completo con questo piccolo programma che stampa gli attributi di tutti gli MBean JVM
In particolare:
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;
}
La parte:
for (String key : data.getCompositeType().keySet()) {
[...] data.get(key) [...];
}
essere ciò che stai cercando.