private Handler handler = new Handler() {@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 'a':
system.out.println("aa");
break;
case 'a':
dialog.cancel();
system.out.println("bb");
break;
}
}
};疑问:一般的new语法不是 private Handler handler = new Handler();
那后面{}; 是什么语法了? 

解决方案 »

  1.   

    比如说是个接口,或者是个abstract 修饰的类型,需要你new的时候就要实现其方法所以就会带上后面的东西
      

  2.   

    先看段伪代码
    abstract class Father(){
     ....
    }public class Test{
       Father f1 = new Father(){ .... }  //这里就是有个匿名内部类
    }
    一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
    但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
    因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
    上面的伪代码就是表示new 的是Father的实现类,这个实现类是个匿名内部类。
    其实拆分上面的匿名内部类可为
    class SonOne extends Father{
      ...       //这里的代码和上面匿名内部类,大括号中的代码是一样的
    }
    public class Test{
       Father f1 = new SonOne() ;
    }