Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android studio未使用其他类创建对象_Java_Android_Android Studio - Fatal编程技术网

Java Android studio未使用其他类创建对象

Java Android studio未使用其他类创建对象,java,android,android-studio,Java,Android,Android Studio,WeatherDataModel WeatherDataModel=newweatherdatamodel.fromJson(响应) 我正在使用参数响应在我的MainActivity中使用方法fromJson(在WeatherDataModel类中定义)创建一个WeatherDataModel(我的第二个类)对象 但是当我写上面的代码时,Android studio无法识别来自JSON的,但是当我写这段代码时: WeatherDataModel weatherDataModel = new We

WeatherDataModel WeatherDataModel=newweatherdatamodel.fromJson(响应)

我正在使用参数响应在我的
MainActivity
中使用方法
fromJson
(在
WeatherDataModel
类中定义)创建一个
WeatherDataModel
(我的第二个类)对象

但是当我写上面的代码时,Android studio无法识别来自JSON的
,但是当我写这段代码时:

WeatherDataModel weatherDataModel = new WeatherDataModel();
weatherDataModel.fromJson(response);
它没有显示任何错误


这两行之间有区别吗?

在调用方法之前,您需要一个对象的实例, 所以你的代码应该是这样的

WeatherDataModel weatherDataModel = new WeatherDataModel().fromJson(response);

要么您错过了构造函数的括号,要么您甚至可以通过声明
fromJson
方法static来摆脱
new
关键字,这从代码可读性的角度来说更有意义

如果
fromJson
不是静态的,则可以随时在活动实例上调用它,从而销毁该实例中已存储的任何值

因此,我将该方法声明为

public static WeatherDataModel fromJson(String response) {
    WeatherDataModel wd = new WeatherDataModel();
    // parse your response into wd's fields
    return wd;
}
从外面看,你的电话看起来像

WeatherDataModel model = WeatherDataModel.fromJson(response);

希望这能有所帮助,干杯“这有区别吗”-是的,有一个区别:你在第一行WeatherDataModel之后忘记了
()
,你忘记了用
()
(3)你忘了调用构造函数(),可能你想要一个静态工厂方法,它既不是构造函数也不是实例方法。您可以将其定义为
publicstaticweatherdatamodelfromjson(stringjson)
,并将其称为
WeatherDataModel w=WeatherDataModel.fromJson(response)
。你今天拥有的是一个破碎的构造函数和一个静态工厂的混合体。你需要用()调用你的构造,这就是区别,否则两者都是一样的。谢谢大家我实际上是Android新手,一周前才开始。非常感谢你们我的应用程序现在运行得非常好