Java 如何从非静态传递静态类/方法中的数据?

Java 如何从非静态传递静态类/方法中的数据?,java,android,static,Java,Android,Static,我得到了一个静态类,该类正在从服务器加载数据,并将其打包到对象中,这些对象随后进入数组并传递给普通类。我想添加参数“到用户的距离”,它需要用户位置来计算。所有项目都在不同的java类中。 静态类中的方法,该方法对从服务器响应到对象的内容进行排序 public static List<Quake> extractEarthquakes(String earthquakeJSON) { if (TextUtils.isEmpty(earthquakeJSON)) {

我得到了一个静态类,该类正在从服务器加载数据,并将其打包到对象中,这些对象随后进入数组并传递给普通类。我想添加参数“到用户的距离”,它需要用户位置来计算。所有项目都在不同的java类中。 静态类中的方法,该方法对从服务器响应到对象的内容进行排序

public static List<Quake> extractEarthquakes(String earthquakeJSON) {
    if (TextUtils.isEmpty(earthquakeJSON)) {
        return null;
    }
    List<Quake> earthquakes = new ArrayList<>();
JSONObject jsonObj = new JSONObject(earthquakeJSON);
        JSONArray features = jsonObj.getJSONArray("features");
        for (int i = 0; i < features.length(); i++) {
            double distance = 0;
            JSONObject currentEarthquake = features.getJSONObject(i);
            JSONObject properties = currentEarthquake.getJSONObject("properties");
            double mag = properties.getDouble("mag");
            String location = properties.getString("place");
            String date = properties.getString("time");
            String url = properties.getString("url");
            int felt = 0;
            if(!properties.isNull("felt")) {
                felt = properties.getInt("felt");
            }
            JSONObject geometry = currentEarthquake.getJSONObject("geometry");
            JSONArray coordinates = geometry.getJSONArray("coordinates");
            double longitude = coordinates.getDouble(0);
            double latitude = coordinates.getDouble(1);
            int depth = coordinates.getInt(2);
            Quake earthquake = new Quake(mag, location, date, url, felt, longitude, latitude, depth, distance);
            earthquakes.add(earthquake);
        }
    }
    return earthquakes;
}r
在MainActivity中,有一个LoaderManager,它启动loader类工作。还有LocationManager,它可以获取用户的经度/纬度。到目前为止,我对如何做到这一点几乎没有什么想法,但没有一个奏效

  • 为数组列表中的每个对象元素设置值的步骤
  • 在静态类中查找位置
  • 以某种方式将两个双变量从非静态传递到静态
  • 据我所知,最后一个是不可能的。虽然在我的对象中,我不能更改任何值,但其中没有
    .setValue()
    方法,所以我能做的最多的事情就是为kmag(用于返回的变量)设置新值


    最后,我无法将LocationManager转移到静态类中,因为它需要请求用户权限,并且在示例中,我发现所有方法都不是静态的。所以我的问题是:我有什么遗漏吗?也许还有其他更简单的方法可以做到这一点,或者我只是在这三种方法中的一种失败了?

    您可以随时从类之外的任何地方调用静态方法(取决于访问修饰符)。因此,您可以使用以下命令调用
    extractSequences()
    方法:

    ItsClassName.extractEarthquakes(jsonValue);
    
    如果方法在同一类中,则不能从静态方法调用非静态方法,如下所示:

    public class TestClass {
    
      public static List<Quake> extractEarthquakes(String earthquakeJSON) {
        ...
    
        // This will give an error:
        // Non-static method 'callExtract()` cannot be referenced from a static context
        doSomething();
      }
    
      public void doSomething() {
         ...
      }
    }
    
    公共类TestClass{
    公共静态列表(字符串地震JSON){
    ...
    //这将产生一个错误:
    //无法从静态上下文引用非静态方法“callExtract()”
    doSomething();
    }
    公共无效剂量测定法(){
    ...
    }
    }
    
    但您可以从同一类中的非静态方法调用静态方法。


    对于ask users权限,您可以在调用静态方法之前调用它。

    什么是“静态类”?请考虑显示相关的和真实的代码。欢迎访问堆栈溢出!请阅读我们的文章,帮助你提出一个好问题,从而得到一个好答案。编辑你的问题,把它说清楚,添加一些代码。很难理解!这里的关键是静态方法extractSequences()为地震对象提供数据。不知何故,我需要将当前设备位置(非静态方法提供)推送到ExtractSevents()。stackoverflow是否有一些我可以更深入解释的私人消息系统?
    public class TestClass {
    
      public static List<Quake> extractEarthquakes(String earthquakeJSON) {
        ...
    
        // This will give an error:
        // Non-static method 'callExtract()` cannot be referenced from a static context
        doSomething();
      }
    
      public void doSomething() {
         ...
      }
    }