Java.lang.classcastException

Normaal gesproken wat is de reden om Java.lang.classcastException te krijgen ..? Ik krijg de volgende fout in mijn aanvraag

java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw

Antwoord 1, Autoriteit 100%

Volgens de documentatie :

Gegooid om aan te geven dat de code heeft geprobeerd een Objectnaar een subklasse te werpen
waarvan het geen instantie is. Bijvoorbeeld de volgende code genereert ClassCastException:

Object x = new Integer(0);
System.out.println((String)x); 

Antwoord 2, Autoriteit 46%

A ClassCastExceptionOCURRS Wanneer u probeert een voorbeeld van een object naar een type te werpen dat het niet is. Casting werkt alleen als het gegoten object volgt een “is een” relatie met het type dat u probeert te cast. Bijvoorbeeld

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

Dit werkt omdat een appel ‘een’ fruit is. Maar als we dit omkeren.

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

Dit zal een ClasCastException gooien omdat een Fruit is niet (altijd) een Apple.

Het is een goede gewoonte om alle expliciete gieten te bewaken met een instanceofControleer eerst:

if (myApple instanceof Fruit) {
  Fruit myFruit = (Fruit)myApple;
}

Antwoord 3, Autoriteit 12%

@Laurențiu Dascălu’s antwoord legt uit hoe/waarom je een ClassCastException krijgt.

Uw uitzonderingsbericht lijkt me nogal verdacht, maar het kan u helpen te weten dat “[Lcom.rsa.authagent.authapi.realmstat.AUTHw” betekent dat het werkelijke type van het object dat u probeerde te casten com.rsa.authagent.authapi.realmstat.AUTHw[]; d.w.z. het was een array-object.

Normaal gesproken zijn de volgende stappen om een probleem als dit op te lossen:

  • het onderzoeken van de stacktrace om erachter te komen welke regel van welke klasse de uitzondering veroorzaakte,
  • de bijbehorende broncode onderzoeken, om te zien wat het verwachte type is, en
  • terugzoeken om te zien waar het object met het “verkeerde” type vandaan kwam.

Antwoord 4, autoriteit 4%

Het is omdat je naar het verkeerde ding cast – je probeert te converteren naar een bepaald type, en het object waarnaar je express verwijst is incompatibel met dat type. Bijvoorbeeld:

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

Als je een codevoorbeeld zou kunnen geven, zou dat echt helpen…


Antwoord 5, autoriteit 2%

Om x !instance of Longprob . te vermijden
Toevoegen

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

in uw persistentie.xml


Antwoord 6

ClassA a = <something>;
ClassB b = (ClassB) a;

De 2e regel zal mislukken als ClassA geen subklasse van ClassB is, en zal een ClassCastException genereren.

Other episodes