我的结构是这样的:
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/