通常情况下,获取java.lang.ClassCastException的原因是什么?我在我的应用程序中得到以下错误
java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw
发布于 2010-08-18 18:41:57
根据the documentation的说法
抛出以指示代码试图将Object
强制转换为它不是其实例的子类。例如,下面的代码生成一个ClassCastException
:
Object x = new Integer(0);
System.out.println((String)x);
发布于 2010-08-18 19:19:25
当您尝试将对象的实例强制转换为不是该对象的类型时,就会发生ClassCastException
。仅当强制转换的对象遵循与您试图强制转换的类型的"is a“关系时,强制转换才有效。例如
Apple myApple = new Apple();
Fruit myFruit = (Fruit)myApple;
这是因为苹果“是”一种水果。然而,如果我们颠倒这一点。
Fruit myFruit = new Fruit();
Apple myApple = (Apple)myFruit;
这将抛出一个ClasCastException,因为水果并不总是苹果。
最好先用instanceof
检查保护任何显式类型转换:
if (myApple instanceof Fruit) {
Fruit myFruit = (Fruit)myApple;
}
发布于 2010-08-18 18:41:32
这是因为您转换为错误的对象-您正在尝试转换为特定类型,而您的表达式引用的对象与该类型不兼容。例如:
Object x = "this is a string";
InputStream y = (InputStream) x; // This will throw ClassCastException
如果你能提供一个代码样本,那将会很有帮助...
https://stackoverflow.com/questions/3511169
复制相似问题