gpt4 book ai didi

java - 为什么向下转换抛出异常?

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:30 25 4
gpt4 key购买 nike

在Java中:

Base b = new Base();
Derived d = (Derived)b;

抛出 ClassCastException。为什么?为什么向下转型会在这里抛出 Exception?我想不出原因。

最佳答案

让我重命名您的类(class)以使事情更清楚。 基础 -> 动物Derived -> Cat.

仅仅因为你是一只动物并不意味着你是一只。你可能是一只。这就是为什么将 Animal 转换为 Cat 是非法的。

另一方面,是否每只 Cat 都是 Animal?答案是"is"。这就是您可以编写如下代码的原因:

Animal animal = new Cat();

Cat cat = new Cat();
Animal animal = cat;

另外值得注意的是您可以这样做:

Animal animal = new Cat();
Cat cat = (Cat) animal;

您可以这样做的原因是您的 animal 变量实际上引用了一个 Cat 实例。因此,您可以将其转换回引用 Cat 的变量。

关于java - 为什么向下转换抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com