gpt4 book ai didi

java - 是什么让一个对象赋值与另一个类兼容?

转载 作者:行者123 更新时间:2023-11-30 08:20:42 25 4
gpt4 key购买 nike

我想知 Prop 体是什么允许将一个类的对象转换为另一个类。查看 Class.isInstance(Object obj) javadoc ,它表明一个对象必须与另一个类“兼容”才能被转换为该类。但是,什么构成“作业兼容”?

我正在尝试弄清楚以下内容是如何返回 ClassCastException 的:

public class A
{
multiple private attributes
No constructor
multiple public methods
}

public class B extends A
{
blank default constructor
2 additional private attributes
4 additional public getter / setter methods for these attributes
}

线

B b = (B)variable.getA()  // where getA() returned an instance of class A

返回 ClassCastException A 不能转换为 B。我知道从父类转换到子类是个坏主意。我没有编写有问题的代码,我只是以生产支持能力查看它。

B 类是代码库中唯一从 A 扩展的类。因此 getA() 的结果不是 A 的另一个子类(比如 C)强制转换为 A 的对象。

那么为什么在这种情况下 Java 不能将类 A 的对象转换为看似兼容的类 B?

最佳答案

考虑这两种情况:

A a = new B();
B b = (B)a; <-- Ok.

A a = new A();
B b = (B)a; <-- ClassCastException

因此,为了将对象转换为 B,它必须是 B 的实例(或 B 的子类)。

在您的情况下,它是 A 的一个实例。

关于java - 是什么让一个对象赋值与另一个类兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860620/

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