我看到这种符号,一个带有类名的新运算符,然后是括号中的代码,偶尔会出现在Android示例中。有人可以解释一下吗?在下面的示例中, PanChangeListener 是一个类(或者可能是一个接口),'new'创建一个实例,但是括号中的代码在 PanChangeListener 方面扮演什么角色? ?
fType pcListener = new PanChangeListener() {
@Override
public void onPan(GeoPoint old, GeoPoint current) {
//TODO
}
});
即使是这种语法的名称也会很有用,因为我可以谷歌。
答案 0 :(得分:7)
语法允许您创建一个新类,为某些方法提供实现,然后实例化它。
当本地类只使用一次时,请考虑使用匿名类语法,它将类的定义和使用放在完全相同的位置。
它的工作方式与以下不使用匿名类的代码类似:
class MyPanChangeListener implements PanChangeListener()
{
@Override
public void onPan(GeoPoint old, GeoPoint current) {
//TODO
}
}
// ...
fType pcListener = new MyPanChangeListener();
答案 1 :(得分:1)
您在这里看到了匿名类的创建。它创建(a)名为PanChangeListener
的接口的实现或(b)该名称的抽象类的子类。