从内联覆盖方法访问实例
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;
}
}
我有来自第三方组件的 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;
}
}