java - 如何将接口(interface)变量分配给子接口(interface)变量?

标签 java interface instance

我有这些接口(interface):

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 会给我一个关于不兼容的类型。我该怎么做?

最佳答案

目前,您的代码无法编译,因为 a 属于 Interface 类型,并且无法将其分配给 SubInterface 类型的变量。因此你需要做:

SubInterface b = (MyClass)a;

如果你考虑一下;这是完全有道理的,因为并非所有 Interface 的实现类型都实现了 SubInterface

如果您不知道实现类的实际类型,那么您可以这样做:

SubInterface b = (SubInterface) a;

哪个更安全。

关于java - 如何将接口(interface)变量分配给子接口(interface)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46990320/

相关文章:

java - 使用 Spark Java(网络服务器)时从内存中删除敏感数据

java - 迭代Java8时更新列表中的元素

java - 套接字只能发送一次,并且 Textview 不会从服务器收集信息

java - Java ArrayList.clear() 方法的行为是否一致?

java - 确定一个类对象是否是一个抽象类的实例

Swift - 如何在类属性中存储结构实例

java - android项目中的project.properties

javascript - 如何将 SHA-256 Java 转换为 JavaScript(带有 NPM 的 IONIC )?

C++ 接口(interface)错误;标识符 "class"未定义

java - 接口(interface)内的 toString、hashcode 和 equals 方法