我的结构是这样的:
interface SuperInterface{}
interface SubInterface extends SuperInterface{}
abstract class BaseClass implements SuperInterface{}
class SubClass extends BaseClass {}
我想要做的是将 SubClass 转换为 SubInterface
SubInterface instanceOfSubClass = (SubInterface) new SubClass ();
但我遇到了转换异常。
那么为什么我不能转换为 SubInterface,即使它扩展了 SuperInterface 并且不添加任何内容?它只是 SuperInterface 的包装,由 BaseClass 实现
最佳答案
“SubClass”继承自实现SuperInterface的BaseClass
因此“SubClass”符合类型“BaseClass”和“SuperInterface”
您无法转换为“SubInterface”,因为 SubInterface 是不同的类型。即使你不向它添加任何函数而只是使用ist作为Wrapper,它也是另一种类型
SuperInterface
-BaseClass
--SubClass
-SubInterface
可以看到,SubClass并不在SubInterface的继承路径中
关于java - 将子类转换为父类(super class)实现的子接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589399/