Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
如何在kotlin的数据类中添加值?_Kotlin - Fatal编程技术网

如何在kotlin的数据类中添加值?

如何在kotlin的数据类中添加值?,kotlin,Kotlin,在java中,我从服务器获得响应并向数据模型类添加值,如下所示: JSONObject jsonObject = new JSONObject(response); JSONArray jsonArray = jsonObject.getJSONArray("searches"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject1 = jsonArray.getJSONO

在java中,我从服务器获得响应并向数据模型类添加值,如下所示:

JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("searches");
for (int i = 0; i < jsonArray.length(); i++) {
     JSONObject jsonObject1 = jsonArray.getJSONObject(i);
     SearchHomeModel searchHomeModel = new SearchHomeModel();
     searchHomeModel.setWord(jsonObject1.getString("word"));
     searchHomeModel.setUrl(jsonObject1.getString("url"));
     JSONArray jsonArray1 = new JSONArray(jsonObject1.getString("user"));
     for (int j = 0; j < jsonArray1.length(); j++) {
          JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
          searchHomeModel.setUsername(jsonObject2.getString("username"));
          searchHomeModel.setId(jsonObject2.getString("id"));
          searchHomeModel.setImage(jsonObject2.getString("image"));
          }
     arrayList.add(searchHomeModel);
}
在科特林:

data class SearchHomeModel(
    val word: String,
    val url: String,
    val username: String,
    val id: String,
    val image: String,
    val country: String,
    val city: String,
    val gender: String,
    val job: String,
    val age: String
)

我将修改SearchHomeModel数据类,使其具有具有默认值的可变字段

data class SearchHomeModel(
    var word: String = "default",
    var url: String = "default-url.com",
    ...
)
所有构造函数参数的默认值将允许您在不使用显式参数的情况下构造它,而使用var使字段可变将允许您稍后像使用setter方法一样设置它们

SearchHomeModel searchHomeModel = new SearchHomeModel();
searchHomeModel.word = jsonObject1.getString("word");

也就是说,使用尽可能多的参数来构造它,如果在调用构造函数时能够可靠地知道一些参数,那么最好使用val而不是var的不可变字段。

使用val声明的属性不能随时间更新;它就像java中的常量一样。使用var声明的属性可以随时间更改。 因此,我将按如下方式修复它:

data class SearchHomeModel(
    var word: String?=null,
    var url: String?=null,
    var username: String?=null,
    var id: String?=null,
    var image: String?=null,
    var country: String?=null,
    var city: String?=null,
    var gender: String?=null,
    var job: String?=null,
    var age: String?=null
)
然后你可以使用

var searchHomeModel = SearchHomeModel()
searchHomeModel.word = jsonObject1.getString("word")
请在此处阅读Kotlin文档中有关属性的更多信息:

请发布SearchHomeModel类details@Julian补充道,非常感谢!
var searchHomeModel = SearchHomeModel()
searchHomeModel.word = jsonObject1.getString("word")