我在这个问题上需要一个认真的帮助。可能是它的基础,但是,我无法弄明白。我有一个会话EJB,其中一个方法返回一个枚举数组,即BlndItmTmMthd
数组。当我在客户端调用该方法时,它会给我一个ClassCastException
。
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LBlndItmTmMthd
调试时,我发现ejb方法通过调用BlndItmTmMthd
正确返回BlndItmTmMthd.values()
数组。我无法找出原因。任何想法都会有所帮助。
添加以下评论中的内容
AgreementSession.java是EJB接口,它包含以下方法声明:
BlndItmTmMthd[] getAllBlendedItemTimingMethods();
AgreementSessionEJB.java是实现它的EJB。
public BlndItmTmMthd[] getAllBlendedItemTimingMethods() {
BlndItmTmMthd[] blendedItemTmingMethods = BlndItmTmMthd.values();
return blendedItemTmingMethods;
}
现在,在客户端,当我使用以下代码调用EJB方法时:
BlndItmTmMthd[] _timingMethods =
getLoanScheduleSetupSession().getAllBlendedItemTimingMethods();
我得到了运行时异常。
答案 0 :(得分:1)
错误中的“[L”告诉您问题 - Java无法将对象(即Object [])的数组转换为BlndItmTmMthds数组(一个BlndItmTmMthd [ ])。
BlndItmTmMthd真的是java.lang.Enum吗?
答案 1 :(得分:0)
鉴于错误意味着无法将类型为java.lang.Object的对象强制转换为Enum类,我相信当在EJB接收到EJB的响应时,序列化和反序列化过程中会出现故障。客户端。
您可能需要检查以下几项内容:
答案 2 :(得分:0)