我对classcastexception和llegalstateexception有点困惑,因为在大多数情况下它看起来很相似。
在这里我遇到了这个Java代码中的问题
class consumer
{
LOC----
}
public class provider extends consumer
{
public static void main(String args[])
{
consumer st=new provider();
provider est=(provider)st;
}
}
我被这部分困住了。据我说,它应该产生一个异常(类广播或非法状态)。但是执行过程中没有异常,可能存在classcastexception或非法stateException。但是代码没有任何例外地执行,原因???
我花了一个星期的时间来处理异常,努力掌握异常处理。谁能解释一下为什么它在行中没有显示错误
consumer st=new provider();
provider est=(provider)st;
还解释类广播和非法状态异常...
为什么在这里期望ClassCastException?st
是provider
,您已明确创建了一个,因此可以将provider
对象分配给type的引用provider
。
唯一的事情是编译器不“知道”在运行时st
指向一个provider
对象。由于静态类型st
为consumer
,provider
因此第二行中需要显式强制转换为。但这没什么特别的...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句