一道SCJP题

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:50:56
一道SCJP题
悬赏分:0 - 离问题结束还有 14 天 23 小时
interface TestA { String toString(); }
public class Test {
public static void main(String[] args) {
System.out.println(new TestA() {
public String toString() { return "test";}
});
}
}
答案显示的是test
我想问的是:它用了new TestA ().而TestA 是一个接口,接口不是类,不能使用new运算符实例化一个接口。那为什么这里可以编译呢

这里使用了一个实现TestA接口的匿名类,里面有实现toString()方法的实体,所以new的其实是一个实现TestA接口的类(没有另外命名而已),所以可以编译通过,可以参考下Java匿名类的相关知识~

匿名内部类实现了那个接口了当然返回你那个return了