相关疑难解决方法(0)

为什么在转换为不相关的接口时会编译?

interface Printable {}
class BlackInk {}

public class Main {
    public static void main(String args[]) {
        Printable printable = null;
        BlackInk blackInk = new BlackInk();
        printable = (Printable)blackInk;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果编译并运行上述代码,则结果为ClassCastException printable = (Printable)blackInk;.但是,如果将Printable更改为类,则不会编译,因为blackInk无法强制转换为Printable.当Printable是一个接口时,为什么要编译?

java interface classcastexception

8
推荐指数
2
解决办法
1219
查看次数

Java将对象转换为未实现的接口

我在学习书中发现了以下问题,有点困惑:

给定以下代码,如果用于替换哪个选项,/* INSERT CODE HERE */将启用类型的引用变量Roamable来引用Phone类的对象 ?(选择1个选项.)

interface Roamable{}
class Phone {}
class Tablet extends Phone implements Roamable {
    //INSERT CODE HERE
}
Run Code Online (Sandbox Code Playgroud)

选项包括:

  1. Roamable var = new Phone();
  2. Roamable var = (Roamable)Phone();
  3. Roamable var = (Roamable)new Phone();
  4. 因为接口Roamable和类Phone是不相关的,所以类型的引用变量Roamable不能引用类的对象Phone.

我认为正确的选项是4,但它说它是3.

但是,Phone没有实现Roamable界面,所以你不能施展,可以吗?

java casting interface

8
推荐指数
2
解决办法
3240
查看次数

标签 统计

interface ×2

java ×2

casting ×1

classcastexception ×1