相关疑难解决方法(0)

Kotlin - 如果不是空的话,用改进的Obj道具覆盖Obj道具

TL; DR:

如何减少冗余(任何有效的方法)?

if (personModification.firstName != null) {person.firstName = personModification.firstName}
if (personModification.lastName != null) {person.lastName = personModification.lastName}
if (personModification.job != null) {person.job = personModification.job}
Run Code Online (Sandbox Code Playgroud)

长版:我有一个简单的问题.我有一节课Person:

class Person (val firstName: String?, 
              val lastName: String?, 
              val job: String?)
Run Code Online (Sandbox Code Playgroud)

我有一个叫做的课PersonModification:

class PersonModification(val firstName: String?, 
                         val lastName: String?, 
                         val job: String?)
Run Code Online (Sandbox Code Playgroud)

任务是PersonPersonModification值覆盖任何属性值,如果PersonModification属性不是null.如果你关心,这背后的业务逻辑是一个API端点,它修改Person并接受一个PersonModification参数(但可以更改所有或任何属性,因此我们不希望用空值覆盖有效的旧值).对此的解决方案看起来像这样.

if (personModification.firstName != null) {person.firstName = personModification.firstName}
if (personModification.lastName != null) {person.lastName = personModification.lastName}
if …
Run Code Online (Sandbox Code Playgroud)

optimization dry kotlin

14
推荐指数
1
解决办法
313
查看次数

Kotlin不可空的值可以为null吗?

我有后端给我一些json.

我把它解析给我的班级:

class SomeData(
  @SerializedName("user_name") val name: String,
  @SerializedName("user_city") val city: String,
  var notNullableValue: String)
Run Code Online (Sandbox Code Playgroud)

使用gson转换器工厂:

Retrofit retrofit = new Retrofit.Builder()
  .baseUrl(ENDPOINT)
  .client(okHttpClient)
  .addConverterFactory(GsonConverterFactory.create(gson))
  .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  .build();
Run Code Online (Sandbox Code Playgroud)

在我的界面:

interface MyAPI {
    @GET("get_data")
    Observable<List<SomeData>> getSomeData();
}
Run Code Online (Sandbox Code Playgroud)

然后我从服务器(使用rxJava)检索数据,没有任何错误.但我期待一个错误,因为我认为我应该做这样的事情(以防止GSON转换器错误,因为notNullableValue我的JSON响应中不存在):

class SomeData @JvmOverloads constructor(
  @SerializedName("user_name") val name: String,
  @SerializedName("user_city") val city: String,
 var notNullableValue: String = "")
Run Code Online (Sandbox Code Playgroud)

从后端接收数据并使用没有def值的构造函数解析到我的SomeData类之后,notNullableValue的值== null.

据我所知,在Kotlin中,不可空的值可以为空?

gson kotlin kotlin-null-safety

12
推荐指数
1
解决办法
3287
查看次数

标签 统计

kotlin ×2

dry ×1

gson ×1

kotlin-null-safety ×1

optimization ×1