这是我的代码:
public void pollLocation()
{
myLocation.getLocation(this, new LocationResult()
{
public void gotLocation(Location location)
{
//I want to assign Location object from here...
}
});
}
private Location lastLocation; //...to here.
这可能吗?
答案 0 :(得分:2)
是。通常你可以写
lastLocation = location
但也许LocationResult类/接口也有一个名为lastLocation的字段。在这种情况下,你必须写
OuterClassName.this.lastLocation = location
但是,由于看起来你会进行一些异步轮询,所以没有同步这样做太危险了。你也不会注意到lastLocation何时被设置。所以最好在外部类中使用同步setter。
答案 1 :(得分:1)
您可以使用setter:
public void pollLocation()
{
myLocation.getLocation(this, new LocationResult()
{
public void gotLocation(Location location)
{
//I want to assign Location object from here...
setLastLocation(...);
}
});
}
private Location lastLocation; //...to here.
private void setLastLocation(Location l) { lastLocation = l; }
请注意多线程问题。如果您使用多个线程,则最好声明lastLocation volatile
或使用AtomicReference
。否则,您的代码可能无法按预期工作。
答案 2 :(得分:0)
将lastLocation设为最终java.util.concurrent.atomic.AtomicReference并将其设置为您心中的内容。
(编辑:你确定一个简单的作业不起作用吗?看起来它在Eclipse中有用......)