gpt4 book ai didi

java - 方法体的参数列表怎么可能有一个类?

转载 作者:行者123 更新时间:2023-12-01 04:34:38 28 4
gpt4 key购买 nike

无法理解 LocationFinder.getFinder 参数列表中代码的工作方式,即类 new LocationFinder.Listener()

让我明白那是什么。

private LocationFinder locationFinder;
private ViewMaster viewMaster;

private synchronized void initLocationFinder() {
if (locationFinder == null) {
**locationFinder =LocationFinder.getFinder(new LocationFinder.Listener()
{

public void newLocation(double lat, double lon, int accuracy) {
DataModel.getInstance().setCurrentPosition(new GeoCoordinate(lat, lon, 0), accuracy);
refreshCurrentPositionOnMap();
if (viewMaster != null) {
viewMaster.draw();
}
}
});**
}

}

其中 LocationFinder 是一个抽象类

public static LocationFinder getFinder(Listener listener)
{
// returns finder which is reference of LocationFinder class
}

而Listener是一个接口(interface)

public interface Listener {
void newLocation(double lat, double lon, int accuracy);
}

ViewMaster 是继承 GameCanvas 的最终类

public final class ViewMaster extends GameCanvas {
private volatile boolean refreshScreen = false;

public final void draw() {
refreshScreen = true;
}

这里的 volatile boolean 是什么意思??

最佳答案

1) 您的 LocationFinder getFinder(Listener Listener) 使用 Listener 作为参数。您显示的代码正在创建接口(interface)的匿名实例,并在类主体中提供接口(interface)方法 void newLocation(double lat, double lon, int precision); 的实现。

2) volatile 当您有共享变量并且这些变量由不同线程访问时使用,并提供一种机制让所有线程看到变量的一致值。请参阅JLS - chapter 8 about volatile fields.

关于java - 方法体的参数列表怎么可能有一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504880/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com