我有这些接口:
public interface Interface {
int functionOne();
}
public interface SubInterface extends Interface {
String functionTwo();
}
和这堂课:
public class MyClass implements SubInterface {
...
}
现在问题在于:
Interface a = new MyClass();
SubInterface b = a;
我想将 a 正在寻址的MyClass实例分配给变量 b 。我不想创建一个相同的实例,只需将现有的地址从 a 转移到 b ,但如果我这样做,netbeans会给我一个错误不兼容的类型。我该怎么做?
答案 0 :(得分:1)
目前,您的代码无法编译,因为a
的类型为Interface
且无法分配给SubInterface
类型的变量。因此你需要这样做:
SubInterface b = (MyClass)a;
如果你考虑一下;它完全合理,因为并非Interface
的每种实现类型都实现SubInterface
。
如果你不知道实现类的实际类型,那么你可以这样做:
SubInterface b = (SubInterface) a;
更安全。