java - 在Java中,new TestA()和TestA obj = new TestA()有什么区别?

标签 java inheritance interface

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

在java中,你永远不能实例化java中的接口(interface)。但是为什么上面的代码打印“test”作为输出而不是引发错误?

最佳答案

因为您不是实例化接口(interface),而是定义(并同时实例化)一个新的,因此是一个新类型,它实现TestA 但它没有名字。

这是一个 anonymous class .

关于java - 在Java中,new TestA()和TestA obj = new TestA()有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35053189/

相关文章:

java - 打印所有 JVM 标志

java - 强制子类将@Schedule添加到Java Spring中超抽象类中的方法

C# 如何在不使方法静态化的情况下调用接口(interface)内另一个类的方法?

c# - 我们可以在 C# 中使用接口(interface)实现多态性吗?

java - 这个类是如何工作的或者你如何使用它?

java - StringBuffer - 使用 charAt 追加返回 null

java - 比较java android中的字符串

c# - 为什么将两个字符串作为对象进行比较会导致意外结果

java - Java中的子类和父类(super class)

java - JAXB 使用扩展对象工厂扩展生成的代码 - 显式转换好吗?