我看到了这种表示法,一个带有类名的新运算符,然后带有括号的代码,有时在Android示例中。有人可以解释吗?在下面的示例中,PanChangeListener是一个类(或者可能是一个接口),“new”创建一个实例,但是括号中的代码相对于PanChangeListener扮演什么角色?

fType pcListener = new PanChangeListener() {

      @Override
      public void onPan(GeoPoint old, GeoPoint current) {
                         //TODO
      }
});

就连此语法的名称也将很有用,因为我可以使用Google。

最佳答案

那是一个anonymous class

该语法允许您创建一个新类,为某些方法提供实现,然后实例化它。

如果仅使用一次本地类,请考虑使用匿名类语法,该语法将类的定义和使用放在完全相同的位置。

它的工作方式类似于以下不使用匿名类的代码:

class MyPanChangeListener implements PanChangeListener()
{
    @Override
    public void onPan(GeoPoint old, GeoPoint current) {
        //TODO
    }
}

// ...

fType pcListener = new MyPanChangeListener();

07-24 20:11