java.lang.ClassCastException

Normalmente, qual o motivo para obter java.lang.ClassCastException ..? Eu recebo o seguinte erro em meu aplicativo

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

Segundo a documentação :

Lançada para indicar que o código tentou converter um Object em uma subclass da qual não é uma instância. Por exemplo, o código a seguir gera um ClassCastException :

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

Um ClassCastException ocurrs quando você tenta converter uma instância de um object para um tipo que não é. A transmissão só funciona quando o object fundido segue um relacionamento “é um” com o tipo para o qual você está tentando transmitir. Por exemplo

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

Isso funciona porque uma maçã é um fruto. No entanto, se invertermos isso.

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

Isso lançará um ClasCastException porque um Fruit não é (sempre) uma Apple.

É uma boa prática guardar qualquer conversão explícita com um instanceof verificação primeiro:

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

@ Laurențiu Dascălu’s answer explica como / porque você obtém um ClassCastException.

Sua mensagem de exceção parece bastante suspeita para mim, mas pode ajudá-lo a saber que “[Lcom.rsa.authagent.authapi.realmstat.AUTHw” significa que o tipo real do object que você estava tentando transmitir era com.rsa.authagent.authapi.realmstat.AUTHw[] ; ou seja, era um object de matriz.

Normalmente, os próximos passos para resolver um problema como este são:

  • examinando o stacktrace para descobrir qual linha de qual class lançou a exceção,
  • examinar o código-fonte correspondente, para ver qual o tipo esperado e
  • traçando de volta para ver de onde o object com o tipo “errado” veio.

É porque você está lançando para a coisa errada – você está tentando converter para um tipo específico, e o object a que se refere o seu expresso é incompatível com esse tipo. Por exemplo:

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

Se você pudesse fornecer um exemplo de código, isso realmente ajudaria …

Para evitar x !instance of Long prob Adicionar

  

em seu persistence.xml

 ClassA a = ; ClassB b = (ClassB) a; 

A segunda linha falhará se ClassA não for uma subclass de ClassB e lançará um ClassCastException.