初学java 看到这个语法, new一个对象后面跟着一个大括号,里面是成员定义,请问是什么意思?
见    private ServiceConnection myServiceConn = new ServiceConnection() 这一行。 import android.content.ServiceConnection; public class MyListActivity extends ListActivity
 {
    // some other code ..
    // ...    private ServiceConnection myServiceConn = new ServiceConnection() 
    {
        public void onServiceConnected(ComponentName className, IBinder service) 
        {  
        }
        public void onServiceDisconnected(ComponentName className) 
        {
        }
    };
}
javaandroid

解决方案 »

  1.   


    ServiceConnection应该是个借口吧
    这中方法是通过匿名内部类的方法实现一个借口
      

  2.   

    这是一个匿名内部类,效果等同于
    class Example extends serviceConnection(){
            public void onServiceConnected(ComponentName className, IBinder service) 
            {  
            }
            public void onServiceDisconnected(ComponentName className) 
            {
            }
    }
    private ServiceConnection myServiceConn=new Example();
    也就是说匿名内部类就相当于一个继承了指定对象或实现了指定接口的类的实例。
      

  3.   


     import android.content.ServiceConnection; public class MyListActivity extends ListActivity
     {
        // some other code ..
        // ...    private ServiceConnection myServiceConn = new ServiceConnection() 
        {
            public void onServiceConnected(ComponentName className, IBinder service) 
            {  
            }
            public void onServiceDisconnected(ComponentName className) 
            {
            }
        };
    }是一个匿名内部类
    匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。
    new ServiceConnection()就是实现接口 public void onServiceConnected(ComponentName className, IBinder service) 
            {  
            }
            public void onServiceDisconnected(ComponentName className) 
            {
            }这两个方法就是接口的抽象方法的实现
      

  4.   

    匿名内部类,ServiceConnection()不是一个类而是一个接口或者抽象类,大括号里面的是它必须要实现的方法。
      

  5.   

    这是一个匿名内部类,效果等同于class Example extends serviceConnection(){
            public void onServiceConnected(ComponentName className, IBinder service) 
            {  
            }
            public void onServiceDisconnected(ComponentName className) 
            {
            }
    }
    private ServiceConnection myServiceConn=new Example();也就是说匿名内部类就相当于一个继承了指定对象或实现了指定接口的类的实例。