从 Java 回调中获取值

chr*_*ann 5 java

我有一种方法可以将地址转换为经度/纬度。LatLng 是一个 Google Maps API 类,而 LonLat 是我自己的自定义 util 类。

以下将不起作用,因为我无法在回调方法中设置变量坐标。我不确定如何获得价值。这可能很简单,但让我感到困惑。

提前致谢。

public LonLat convert(String address) {
    LonLat coords;
    geocoder.getLatLng(address, new LatLngCallback() {
        public void onFailure() {
            // TODO Exception handling

        }

        @Override
        public void onSuccess(LatLng point) {
            coords = new LonLat(point.getLongitude(), point.getLatitude());
        }

    });
    return coords;
}
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 1

只需将结果存储在回调对象的私有字段中,并通过 getter 对其进行访问即可。

但由于这些回调是异步的,因此您不能期望立即获取该值。因此,您必须重新构建逻辑 - 不要返回坐标并在调用者中处理它,而是不返回任何内容,并将结果传递给将处理它的新代码段(或直接在回调中处理它)