猿问

Java中“ClassCastException”的解释

Java中“ClassCastException”的解释

我读过一些关于“ClassCastException”的文章,但对此我没有一个好的想法。是否有一篇好文章,或者什么是简短的解释?



qq_花开花谢_0
浏览 959回答 3
3回答

RISEBY

的API规范。ClassCastException:抛出以指示代码试图将对象强制转换为它不是实例的子类。因此,例如,当一个人试图抛出一个Integer转到String, String不是Integer,所以ClassCastException会被扔出去。Object i = Integer.valueOf(42);String s = (String)i;            // ClassCastException thrown here.

子衿沉夜

这非常简单:如果您试图将A类的对象类型转换为B类的对象,并且它们不兼容,则会得到类强制转换异常。让我们考虑一个类的集合。class A {...}class B extends A {...}class C extends A {...}您可以将任何这些东西转换为对象,因为所有Java类都是从对象继承的。你可以把B或C都投给A,因为它们都是A的“种类”可以将对A对象的引用转换为B只有当真正的对象是B。你不能把B投给C,即使他们都是A的。

米琪卡哇伊

这是一个异常,如果您试图降级一个类,但实际上这个类不是该类型的。考虑一下这个世袭制度:对象->动物->狗您可能有一个名为: public void manipulate(Object o) {      Dog d = (Dog) o;  }如果使用此代码调用: Animal a = new Animal();  manipulate(a);它将编译得很好,但在运行时您将得到一个ClassCastException因为O实际上是一只动物,而不是一只狗。在以后的Java版本中,您确实会收到编译器警告,除非您这样做: Dog d;  if(o instanceof Dog) {      d = (Dog) o;  } else {      //what you need to do if not  }
随时随地看视频慕课网APP

相关分类

Java
我要回答