获取java.lang.ClassCastException:[Ljava.lang.Object;无法转换为[LBlndItmTmMthd

时间:2010-07-20 13:31:02

标签: java enums

我在这个问题上需要一个认真的帮助。可能是它的基础,但是,我无法弄明白。我有一个会话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(); 

我得到了运行时异常。

3 个答案:

答案 0 :(得分:1)

错误中的“[L”告诉您问题 - Java无法将对象(即Object [])的数组转换为BlndItmTmMthds数组(一个BlndItmTmMthd [ ])。

BlndItmTmMthd真的是java.lang.Enum吗?

答案 1 :(得分:0)

鉴于错误意味着无法将类型为java.lang.Object的对象强制转换为Enum类,我相信当在EJB接收到EJB的响应时,序列化和反序列化过程中会出现故障。客户端。

您可能需要检查以下几项内容:

  • Enum类BlndItmTmMthd是否在同一个类加载器中可用,或者是否加载了两次?
  • EJB生成的存根是否包含对Enum类或java.lang.Object?
  • 的引用

答案 2 :(得分:0)