今天我和一个 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/