运行时的以下程序将产品stackoverflow作为输出。 我想知道在实例化TestA的行中发生了什么。
interface TestA { String toString(); }
class Test
{
public static void main(String[] args)
{
// whats going on in this line ???
System.out.println(new TestA() {public String toString() { return "stackoverflow"; } });
}
}
答案 0 :(得分:7)
您正在实例化anonymous class,它实现了TestA
接口。
这种技术对于例如GUI编程中的event listeners,因为它可以帮助您避免创建一堆命名的一次性类。
答案 1 :(得分:3)
您正在做的是创建一个实现该接口的匿名类。 为了使它更清晰一点,你也可以写一下:
interface TestA { String toString(); }
class Test
{
public static void main(String[] args)
{
TestA test = new TestA()
{
public String toString()
{
return "stackoverflow";
}
};
System.out.println(test);
}
}
答案 2 :(得分:1)
以下课程即时创建(没有任何名称):
class Annonymous implements TestA
{
String toString() {
return "stackoverflow";
}
}