java - 此java代码是否有可能出现ClassCastException/IllegalStateException?

标签 java exception casting classcastexception illegalstateexception

我对 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/

相关文章:

c# - 是否可以在不手动添加的情况下调用所有 Catch block 的代码?

c# - 引发异常时 Catch block 的行为

mysql - 在mysql中将科学记数法从Varchar转换为Decimal

java - 为什么将 ArrayList 的泛型转换为父类(super class)不起作用?

java - 如何使用 Selenium 处理 Windows 身份验证

java - 数组中包含最大值的元素的位置

java - 使用 Windows 身份验证连接 Java 和 MySQL?

java - JMeter 使用 CSV 数据集填充嵌套的 json 请求正文

.net - 将异常对象传递给 Web 服务

c# - 我可以在 C# 中从泛型类型转换为枚举类型吗?