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新手,一周前才开始。非常感谢你们我的应用程序现在运行得非常好