java.lang.ClassCastException

后端 未结 6 628
感情败类
感情败类 2020-11-29 07:27

Normally whats the reason to get java.lang.ClassCastException ..? I get the following error in my application

java.lang.ClassCastException: [Lcom.rsa.authag         


        
相关标签:
6条回答
  • 2020-11-29 07:44
    ClassA a = <something>;
    ClassB b = (ClassB) a;
    

    The 2nd line will fail if ClassA is not a subclass of ClassB, and will throw a ClassCastException.

    0 讨论(0)
  • 2020-11-29 07:49

    To avoid x !instance of Long prob Add

    <property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
    

    in your persistence.xml

    0 讨论(0)
  • 2020-11-29 08:01

    According to the documentation:

    Thrown to indicate that the code has attempted to cast an Object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:

    Object x = new Integer(0);
    System.out.println((String)x); 
    
    0 讨论(0)
  • 2020-11-29 08:01

    It's because you're casting to the wrong thing - you're trying to convert to a particular type, and the object that your express refers to is incompatible with that type. For example:

    Object x = "this is a string";
    InputStream y = (InputStream) x; // This will throw ClassCastException
    

    If you could provide a code sample, that would really help...

    0 讨论(0)
  • 2020-11-29 08:03

    A ClassCastException ocurrs when you try to cast an instance of an Object to a type that it is not. Casting only works when the casted object follows an "is a" relationship to the type you are trying to cast to. For Example

    Apple myApple = new Apple();
    Fruit myFruit = (Fruit)myApple;
    

    This works because an apple 'is a' fruit. However if we reverse this.

    Fruit myFruit = new Fruit();
    Apple myApple = (Apple)myFruit;
    

    This will throw a ClasCastException because a Fruit is not (always) an Apple.

    It is good practice to guard any explicit casts with an instanceof check first:

    if (myApple instanceof Fruit) {
      Fruit myFruit = (Fruit)myApple;
    }
    
    0 讨论(0)
  • 2020-11-29 08:05

    @Laurențiu Dascălu's answer explains how / why you get a ClassCastException.

    Your exception message looks rather suspicious to me, but it might help you to know that "[Lcom.rsa.authagent.authapi.realmstat.AUTHw" means that the actual type of the object that you were trying to cast was com.rsa.authagent.authapi.realmstat.AUTHw[]; i.e. it was an array object.

    Normally, the next steps to solving a problem like this are:

    • examining the stacktrace to figure out which line of which class threw the exception,
    • examining the corresponding source code, to see what the expected type, and
    • tracing back to see where the object with the "wrong" type came from.
    0 讨论(0)
提交回复
热议问题