从内联覆盖方法访问实例

Access instance from inline override method

我有来自第三方组件的 class,我需要从 onTap 访问 poleMarker,但它是空的,我无权访问它:

Marker poleMarker = new Marker(markerPoint,myBitmap),0,0) {
                    @Override
                    public boolean onTap(org.mapsforge.core.model.LatLong tapLatLong, Point layerXY, Point tapXY) 
                    {
                        // poleMarker is null here and I need it :)
                        lastTappedMarker = poleMarker;
                    }
}

由于您在嵌套的 class 中,您可以简单地使用关键字 'this'。 应该对应同一个实例。

lastTappedMarker = this;

您不能在用不同方法定义的内部 class 中引用非最终变量(这是编译器错误,我自己无法更好地解释它...)。您应该为此使用 this

Marker poleMarker = new Marker(markerPoint,myBitmap),0,0) {
    @Override
    public boolean onTap(org.mapsforge.core.model.LatLong tapLatLong, Point layerXY, Point tapXY) 
    {
         lastTappedMarker = this;
    }
}