java语法问题

java语法问题,java,android,Java,Android,这段代码是在一行中实例化SectionAdapter对象并重写getHeaderView吗 SectionedAdapter tagSectionedAdapter=new SectionedAdapter() { protected View getHeaderView(String caption, int index, View convertView,

这段代码是在一行中实例化SectionAdapter对象并重写getHeaderView吗

SectionedAdapter tagSectionedAdapter=new SectionedAdapter() {
    protected View getHeaderView(String caption, int index,
                                    View convertView,
                                    ViewGroup parent) {
        TextView result=(TextView)convertView;

        if (convertView==null) {
            result=(TextView)getLayoutInflater()
            .inflate(R.layout.tag_listview_header, null);
        }

        result.setText(caption);

        return(result);
    }
};

是的,你说得对。这被称为一个。该类已定义,但从未指定名称。(
SectionAdapter
实际上是匿名类的超类型。)

它声明一个类并重写一个方法

类似于这样声明一个类:

class MySectionedAdapter extends SectionedAdapter
{
   @Override
   protected View getHeaderView(...)
   {
      ...
   }
}
然后实例化该类:

SectionedAdapter标记SectionedAdapter=new MySectionedAdapter()

这是一个匿名的内部类——没有名字,语法略有不同。在某些情况下,当您只需要类的一个特定实例时,可以使用它。例如,比较器类通常以这种方式实现并传递到排序函数中

您实现的类实际上可以是一个接口,而不是一个类,如
Runnable