我对 classcastException 和非法状态异常都有点困惑,因为在大多数情况下它们看起来都很相似。
我在这个java代码中遇到了一个问题
class consumer
{
LOC----
}
public class provider extends consumer
{
public static void main(String args[])
{
consumer st=new provider();
provider est=(provider)st;
}
}
我被这部分困住了。根据我的说法,它应该生成异常(类转换或非法状态)。但执行时没有异常,可能会出现classcastException或者非法状态异常。但是代码执行没有任何异常,原因???
我在异常处理方面有点周,努力掌握异常处理。任何人都可以解释为什么它没有在行中显示错误
consumer st=new provider();
provider est=(provider)st;
还解释了类转换和非法状态异常...
最佳答案
为什么这里会出现 ClassCastException?
st
是一个 provider
,您显式地创建了一个 provider
对象,因此将 provider
对象分配给 provider
类型的引用是好的。
唯一的事情是编译器不“知道”st
在运行时会指向 provider
对象。由于 st
的静态类型是 consumer
,因此第二行需要显式转换为 provider
。但这没什么特别的......
关于java - 此java代码是否有可能出现ClassCastException/IllegalStateException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002984/