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