题目是这样的:
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();吧。。这种用法在什么地方有介绍呢?
期待高人解答,谢谢。

解决方案 »

  1.   

    匿名内部类class OutterClass {    private static class MyThreadLocal extends ThreadLocal<Integer> {
            public Integer initialValue(){    
                return 0;    
            }   
        }    private static MyThreadLocal seqNum = new MyThreadLocal();
    }
      

  2.   

    new B(){} 创建了一个匿名类的对象,该对象继承B. This will call the default constructor of B.比较常见的是匿名类的应用一般用于实现回调函数. 可以参考 Comparator interface 的使用。
      

  3.   

    结果abhi
    把那个匿名内部类当成一个子类继承了父类就好了
      

  4.   


    public static void main(String[] args) {
    Test4 f=new Test4();//调用Test4的默认构造器打印“a”
    f.makeB();//调用makeB();}
    void makeB(){
    (new B(){}).go();//匿名内部类B,先调用B的默认构造器打印“b”,再调用go()方法,打印“hi”
    }结果:abhi
      

  5.   

    (new B(){}).go();等同(new B()).go();