当使用枚举作为MXBean中Map的值组件时,看起来我很难转换枚举。
public enum MyEnum {
EnumVal1, EnumVal2, EnumVal3
};
public interface MyMXBean {
Map<String,MyEnum> getEnumMap();
}
MyMXBean proxy = JMX.newMBeanProxy(ManagementFactory.getPlatformMBeanServer(), new ObjectName("MyMXBeanObjectName"), MyMXBean.class);
MyEnum retval = proxy.getEnumMap().get("key");
我在这种情况下收到的异常是(编辑:从那时起就意识到这个异常是由于tabularDataSupport期望一个Object []作为关键参数。)
java.lang.String无法强制转换为[Ljava.lang.Object;
所以我的问题是,我的理解是,当使用JMX代理不正确时,枚举类型应该隐式转换,还是我在提取信息方面缺少某些内容?
如果代理应该代表原始接口,代理调用是否应该与接口调用相同?
答案 0 :(得分:1)
问题是您正在选择MBean代理而不是MXBean代理。
尝试使用
MyMXBean proxy = JMX.newMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), new ObjectName("MyMXBeanObjectName"), MyMXBean.class);