Как правило, возникает причина получить java.lang.ClassCastException..? Я получаю следующую ошибку в своем приложении
java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw
Как правило, возникает причина получить java.lang.ClassCastException..? Я получаю следующую ошибку в своем приложении
java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw
Согласно документации:
Брошенный, чтобы указать, что код попытался применить Object
к подклассу из которых он не является экземпляром. Например, следующий код генерирует ClassCastException
:
Object x = new Integer(0);
System.out.println((String)x);
A ClassCastException
ocurrs, когда вы пытаетесь применить экземпляр объекта к типу, которого нет. Кастинг работает только тогда, когда заброшенный объект следует за отношением "есть" к типу, который вы пытаетесь выполнить. Для примера
Apple myApple = new Apple();
Fruit myFruit = (Fruit)myApple;
Это работает, потому что яблоко - это "плод". Однако, если мы отменим это.
Fruit myFruit = new Fruit();
Apple myApple = (Apple)myFruit;
Это вызовет исключение ClasCastException, потому что Fruit не является (всегда) Apple.
Хорошей практикой является защита всех явных приемов с помощью проверки instanceof
:
if (myApple instanceof Fruit) {
Fruit myFruit = (Fruit)myApple;
}
@Ответ Laurenţiu Dascălu объясняет, как/почему вы получаете исключение ClassCastException.
Ваше сообщение об исключении выглядит довольно подозрительным для меня, но это может помочь вам узнать, что "[Lcom.rsa.authagent.authapi.realmstat.AUTHw" означает, что фактический тип объекта, который вы пытались выполнить, был com.rsa.authagent.authapi.realmstat.AUTHw[]
; т.е. это был объект массива.
Обычно следующие шаги для решения такой проблемы:
Это потому, что вы делаете неправильное дело - вы пытаетесь преобразовать в определенный тип, а объект, который ваш экспресс ссылается, несовместим с этим типом. Например:
Object x = "this is a string";
InputStream y = (InputStream) x; // This will throw ClassCastException
Если бы вы могли предоставить образец кода, это действительно помогло бы...
Чтобы избежать x !instance of Long
prob
Добавить
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
в вашем persistence.xml
ClassA a = <something>;
ClassB b = (ClassB) a;
Вторая строка не удастся, если ClassA не является подклассом класса B и будет генерировать исключение ClassCastException.