我有这些接口:

public interface Interface {
    int functionOne();
}

public interface SubInterface extends Interface {
    String functionTwo();
}


和这个班:

public class MyClass implements SubInterface {
...
}


现在是问题所在:

Interface a = new MyClass();
SubInterface b = a;


我想要将MyClass的实例分配给变量b。我不想创建相同的实例,只需将现有地址从a转移到b,但是如果我这样做,netbeans会给我关于不兼容类型的错误。我该怎么做?

最佳答案

当前,您的代码将无法编译,因为a的类型为Interface,并且无法将其分配给类型为SubInterface的变量。因此,您需要执行以下操作:

SubInterface b = (MyClass)a;


如果你考虑一下;这是完全有意义的,因为不是Interface的每种实现类型都实现了SubInterface

如果您不知道实现类的实际类型,则可以执行以下操作:

SubInterface b = (SubInterface) a;


这更安全。

09-04 16:05