1

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
 }

リスナーはインターフェースです

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

ここで、揮発性ブール値とはどういう意味ですか??

4

1 に答える 1

0

1) as パラメータLocationFinder getFinder(Listener listener)を使用Listenerします。void newLocation(double lat, double lon, int accuracy);あなたが示したコードは、インターフェイスの匿名インスタンスを作成しており、クラス本体でインターフェイス メソッドの実装を提供しています。

2)volatile共有変数があり、これらが異なるスレッドによってアクセスされ、すべてのスレッドが変数の一貫した値を参照できるようにするメカニズムを提供する場合に使用されます。揮発性フィールドについては、JLS - 第 8 章を参照してください。

于 2013-07-06T16:47:53.373 に答える