【发布时间】:2016-02-05 08:05:23
【问题描述】:
为什么我们可以像这样从超类转换为子类:
Object o = getStringObject();
String str = (String) o;
但随后使用相同的原理将接口 DOWN 转换为子类型 E.G.?
InterfaceType anInterface;
anInterface = (InterfaceType) SubClassVar;
所以示例 1 一切都很好。我不明白的是,如果接口是实现它的类的超类型,那么当我们将类向下转换为接口时,如果在层次结构中接口更高,我们怎么没有 ClassCastException?我在某处读到,通过类和接口进行强制转换之间存在差异,但他们当然不想解释原因,所以我一直处于开放状态。谢谢,堆栈!
【问题讨论】:
-
我很困惑。你是说
SubClassVar是InterfaceType吗?那么演员阵容就没用了。 -
@SotiriosDelimanolis SubClassVar 是一个实现 InterfaceType 的类
-
@SotiriosDelimanolis 也许我需要更多信息,但如果你是为 android 开发的,这是通信器模式,用于在活动和片段之间进行对话。
-
第二个 sn-p 不需要演员表。
标签: java android interface casting