java - 接口(interface)之间的转换

标签 java interface casting

我的问题与 Java 语言有关。 这是我得到的:

interface I1{}
interface I2{}
class C1 implements I1{}
class C3 extends C1 implements I2{}

什么时候

     C1 01;
     C3 o3;
     I1 i1;

等等

现在证明 I2 i2 = (I2) i1; 是正确的,因为在运行时 i1 实际上指的是实现 I2 的对象。 但我不明白。接口(interface)之间没有关系,那么如何将其转换为相邻的接口(interface)呢? 没有更多的代码,只是为了准备Java认证而进行的演练。 最好的问候

最佳答案

如果您将 Integer 转换为 String,编译器可以将其视为非法来阻止,但是,由于一个类可以实现多种接口(interface),因此编译器不能当您将一种接口(interface)类型转换为另一种接口(interface)类型时,不知道您是否越界了。考虑这段代码:

I1 i1 = getI1();
if (i1 instanceof I2) {
  I2 i2 = (I2) i1;
}

如果 Java 编译器不允许从一个接口(interface)转换为另一个接口(interface),那么这段完全合法的代码将无法编译。

关于java - 接口(interface)之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13219097/

相关文章:

java - 使用 hibernate 查询 : colon gets treated as parameter/escaping colon

java - 福特-富尔克森实现java

Java-为什么方法参数将浮点值视为 double 值?

c - 不在 C 中转换指针会导致问题吗?

C 将 float 转换为整数

java - JAX-WS MTOM 在发送给客户端后删除附件

java - Primefaces 对话框将标题和内容显示为网页中的文本

java - 将接口(interface)的实现者强制为枚举

c# - 接口(interface)中的自引用

java - 如何为多个观察者实现不同的行为?