我们可以创建一个接口对象吗?

shi*_*ome 31 java interface anonymous-class

interface TestA {
    String toString();
}

public class Test {
    public static void main(String[] args) {
        System.out.println(new TestA() {
            public String toString() {
                return "test";
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是什么?

A.测试
B. null
C.在运行时抛出异常.
D.由于第1行中的错误,
编译失败.E.由于第4行中的错误,
编译失败.F.由于第5行中的错误,编译失败.

这个问题的答案是什么?为什么?关于这个问题我还有一个问题.在第4行中,我们创建了A的对象.是否可以创建接口的对象?

jjn*_*guy 88

你在这里看到的是一个匿名的内部类:

给出以下界面:

interface Inter {
    public String getString();
}
Run Code Online (Sandbox Code Playgroud)

您可以像这样创建类似于它的实例:

Inter instance = new Inter() {
    @Override
    public String getString() { 
      return "HI"; 
    } 
  };
Run Code Online (Sandbox Code Playgroud)

现在,您有一个您定义的接口实例.但是,您应该注意到您实际执行的操作是定义了一个实现接口并同时实例化该类的类.

  • 我在寻找它.这是一个非常简短的答案.+1简洁. (2认同)

Ste*_*all 5

test应该是输出.这是一个匿名内部类的示例.

这是一种非常常见的模式,与Comparator接口一起用作闭包仿真.