我对 MXBean 自定义类型有疑问,我无法处理它。这是我的java结构,涉及Map< enum, OtherThing>
属性
PPV及其接口
public class PPV implements PPVMXBean {
public enum EnumPV {
PV1,
PV2;
}
public static Map<EnumPV, PV> list;
public Map<EnumPV, PV> getList() {
return list;
}
}
public interface PPVMXBean {
public Map<EnumPV, PV> getList();
}
PV及其接口
public class PV implements PVBean {
public enum EnumTP {
TP1,
TP2;
}
private Map<EnumTP, EnumP[]> mapP;
private Map<EnumTP, EnumP[]> mapC;
private Map<EnumTP, EnumP[]> mapT;
private Map<EnumTP, EnumP[]> mapV;
public Map<EnumTP, EnumP[]> getMapP() {
return mapP;
}
public Map<EnumTP, EnumP[]> getMapC() {
return mapC;
}
public Map<EnumTP, EnumP[]> getMapT() {
return mapT;
}
public Map<EnumTP, EnumP[]> getMapV() {
return mapV;
}
}
public interface PVBean {
public Map<EnumTP, EnumP[]> getMapP();
public Map<EnumTP, EnumP[]> getMapC();
public Map<EnumTP, EnumP[]> getMapT();
public Map<EnumTP, EnumP[]> getMapV();
}
枚举
public enum EnumP {
P1(1),
P2(2);
private int p;
EnumP (int pAux) {
p = pAux;
}
public int getP() {
return p;
}
}
有了这一切,我得到:
...
Caused by: javax.management.NotCompliantMBeanException: com.example.PPVMXBean: Method com.example.PPVMXBean.getLista has parameter or return type that cannot be translated into an open type
...
Caused by: java.lang.IllegalArgumentException: Method com.example.PPVMXBean.getLista has parameter or return type that cannot be translated into an open type
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: java.util.Map<com.example.PPV$EnumPV, com.examplePV>
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: class com.example.PV
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: java.lang.Class<?>
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: java.lang.Class<?>
我究竟做错了什么?问题出在哪里?