当将枚举用作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代理时枚举类型应隐式转换是不正确的,还是我在提取信息方面缺少某些东西?

给定代理应该代表原始接口,代理调用是否应该与接口调用相同?

最佳答案

问题是您选择的是MBean代理而不是MXBean代理。

尝试使用

MyMXBean proxy = JMX.newMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), new ObjectName("MyMXBeanObjectName"), MyMXBean.class);

关于java - JMX MXBean枚举处理转换错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7341730/

10-10 20:21