java - 创建接口(interface)的 "object"

标签 java object interface

今天我和一个 friend 发生了一些争论,他声称可以创建接口(interface)对象。当我说不可能时,他给我看了下面一段代码,看起来和匿名类类似。现在的问题是,正确答案是什么?

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");                
            }           
        };
    }
}

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

最佳答案

不,这是创建一个实现该接口(interface)的匿名类的实例。

这是 Java Language Specification, section 15.9 的明确答案:

Both unqualified and qualified class instance creation expressions may optionally end with a class body. Such a class instance creation expression declares an anonymous class (§15.9.5) and creates an instance of it.

关于java - 创建接口(interface)的 "object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7586277/

相关文章:

JAVA:创建不干扰同一类其他对象的新对象

go - 如何制作一个接收自定义接口(interface)数组的函数

java - 与内部实现的接口(interface)——好还是坏

java - 尝试使用战略设计界面,但无法将数据放入变量中

2 个客户端之间的 Java 套接字本地连接 - 设计

java - Docker maven 镜像正在创建 root 拥有的目标文件夹,并且 Jenkins 无法将其从其工作区中删除

java - Spring singleton bean 在被代理时在每个方法调用上创建新的实例/bean

javascript - 如何使用 Javascript 编辑 JSON?

java - Thymeleaf 日期输入给出表单提交的当前日期

c# - 将 Parameter<T> 存储/转换为 Parameter<object> 包括 Parameter<int>?