从内联覆盖方法

时间:2015-07-02 11:32:42

标签: java class override instance

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

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;
                    }
}

2 个答案:

答案 0 :(得分:2)

你不能在不同方法中定义的内部类中引用非final变量(这是编译器错误,我自己也无法解释它......)。您应该使用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;
    }
}

答案 1 :(得分:1)

由于您在嵌套类中,因此您只需使用关键字“this”即可。 它应该对应于同一个实例。

lastTappedMarker = this;