我有这些接口:
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;
这更安全。