小编典典

创建界面的“对象”

java

今天,我和一个朋友吵了一架,他声称可以创建接口对象。当我说这不可能的时候,他给我看了下面的代码,看起来与匿名类相似。现在的问题是,正确的答案是什么?

public interface I {
    public void f();
}

public class InterfaceTest {
    public static void main(String []args){
        new I(){
            @Override
            public void f() {
                System.out.println("HELLO");                
            }           
        };
    }
}

这真的可以称为创建接口“对象”吗?


阅读 202

收藏
2020-11-30

共1个答案

小编典典

不,这是创建实现该接口的匿名类的实例。

这是Java语言规范第15.9节中的明确答案:

不合格和合格的类实例创建表达式都可以选择以类主体结尾。这样的类实例创建表达式声明一个匿名类(第15.9.5节)并创建一个实例。

2020-11-30