Java 中 ClassCastException 的解释

2022-08-31 11:03:46

我读了一些关于“ClassCastException”的文章,但我无法很好地了解它的含义。什么是ClassCastException?


答案 1

直接来自ClassCastException的API规范:

抛出以指示代码已尝试将对象强制转换为它不是其实例的子类。

因此,例如,当一个人试图将 a 转换为 a 时,不是 的子类,因此将抛出 a。IntegerStringStringIntegerClassCastException

Object i = Integer.valueOf(42);
String s = (String)i;            // ClassCastException thrown here.

答案 2

这真的很简单:如果你试图将类A的对象类型化为类B的对象,并且它们不兼容,你会得到一个类强制转换异常。

让我们考虑一个类的集合。

class A {...}
class B extends A {...}
class C extends A {...}
  1. 您可以将这些内容中的任何一个强制转换为 Object,因为所有 Java 类都继承自 Object。
  2. 您可以将B或C转换为A,因为它们都是“种类”A
  3. 仅当实际对象为 B ,才能将对 A 对象的引用强制转换为 B。
  4. 你不能把B投给C,即使它们都是A。

推荐