Convierta GsonBuilder en Kotlin

¿Alguien sabe cómo convertir este código en kotlin

GsonBuilder builder = new GsonBuilder(); builder.setLenient(); builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { @Override public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (json.getAsJsonPrimitive().isNumber()) { return new Date(json.getAsJsonPrimitive().getAsLong() * 1000); } else { return null; } } }); return builder.create(); 

Entonces lo intenté

 val builder = GsonBuilder() builder.setLenient() builder.registerTypeAdapter(Date::class.java,.........) return builder.create() 

….. no puedo averiguarlo cómo convertir el código

La línea de código que está preguntando sobre puede convertirse al siguiente código de Kotlin:

 builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> if (json.getAsJsonPrimitive().isNumber()) Date(json.asJsonPrimitive.asLong * 1000) else null }) 

En primer lugar, Kotlin soporta la conversión SAM de lambdas a interfaces Java , pero la sintaxis es diferente a Java. Entonces, los retornos dentro de lambdas tienen un significado diferente al de Java, y deben ser reemplazados por retornos implícitos o devoluciones etiquetadas .

Gracias, ya lo averigué .. es la forma correcta de hacerlo, cualquier experto puede comentar

  @Provides @Singleton fun provideGson(): Gson? { val builder = GsonBuilder() builder.setLenient() builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> if (json.asJsonPrimitive.isNumber) { Date(json.asJsonPrimitive.asLong * 1000) } else { null } }) return builder.create() } 
 val gson = GsonBuilder().apply { setLenient() registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> if(json.asJsonPrimitive.isNumber) { Date(json.asJsonPrimitive.asLong * 1000) } else { null } }) }.create() 
  • Kotlin: Recopilación incremental con Gradle
  • ¿Cuál es la diferencia entre rizadores y brackets normales en RxJava con Kotlin
  • ¿Cuál es la mejor manera de declarar en el componente de la interfaz de usuario en android con Kotlin?
  • Deshabilitar la generación incremental para kapt
  • Vinculación de datos de los errores del estudio Android de Kotlin
  • Android: ¿Cómo llamar a la función ndk de Kotlin?
  • Kotlin android proguard error
  • Reglas de ProGuard para la reflexión de Kotlin
  • Json a clases de datos kotlin
  • Kotlin - Agregar artículos a ExpandableListView
  • Kotlin: @ propiedades ignoradas persistidas por Sugar ORM
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.