日期:2014-05-18  浏览次数:20645 次

一道网易笔试题,关于java中的构造函数调用问题
题目是这样的:
public class Test4 {

/**
 * @param args
 */

Test4(){
System.out.print("a");
}
class B{
B(){
System.out.print("b");
}
B(int i){
System.out.print("dddd");
}
public void go(){
System.out.print("hi");
}
}

public static void main(String[] args) {
Test4 f=new Test4();
f.makeB();

}
void makeB(){
(new B(){}).go();
}
}
让写出运行结果。其中在makeB方法里,有(new B(){}).go();我想请问下,有谁知道这种构造函数调用方法吗?一般而言,应该是用(new B()).go();吧。。这种用法在什么地方有介绍呢?
期待高人解答,谢谢。

------解决方案--------------------
new B(){} 创建了一个匿名类的对象,该对象继承B. This will call the default constructor of B.

比较常见的是匿名类的应用一般用于实现回调函数. 可以参考 Comparator interface 的使用。
------解决方案--------------------
结果abhi
把那个匿名内部类当成一个子类继承了父类就好了。。。