我的结构是这样的:

interface SuperInterface{}

interface SubInterface extends SuperInterface{}

abstract class BaseClass implements SuperInterface{}

class SubClass extends BaseClass {}


我想做的是将SubClass转换为SubInterface

SubInterface instanceOfSubClass = (SubInterface) new SubClass ();


但我得到一个强制转换例外。

那么,即使扩展SuperInterface却不添加任何内容,我为什么也不能投射到SubInterface?它只是由BaseClass实现的SuperInterface的包装

最佳答案

“ SubClass”继承自实现SuperInterface的BaseClass

因此,“ SubClass”符合类型“ BaseClass”和“ SuperInterface”

您不能转换为“ SubInterface”,因为SubInterface是另一种类型。即使您没有添加任何功能,而只是将ist用作包装器,它也是另一种类型

SuperInterface
    -BaseClass
        --SubClass
    -SubInterface


您可以看到SubClass不在SubInterface的继承路径中

关于java - 将Subclass转换为SuperClass实现的SubInterface,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37589399/

10-13 08:58