Конвертировать GsonBuilder в Kotlin

Кто-нибудь знает, как преобразовать этот код в 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(); 

Тогда я попробовал

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

….. я не могу понять, как преобразовать код

Строка кода, о которой вы просите, может быть преобразована в следующий код Kotlin:

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

Во-первых, Kotlin поддерживает преобразование SAM lambdas в интерфейсы Java , но синтаксис отличается от Java. Затем, возврат внутри lambdas имеет значение, отличное от значения в Java, и должно быть заменено неявным возвратом или помеченным возвратом .

Спасибо, я уже понял, что это правильный способ сделать это, любой эксперт может комментировать

  @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() 
Intereting Posts
Кнопка Detect Back Нажмите кнопку в Android View Hibernate игнорирует «ленивый» тип выборки и сразу загружает свойства Как использовать null с kotlin @Parcelize Перепишите Java-код в Kotlin, используя функцию Reference, возникает конфликт типов SAM "Convert" Просмотреть класс для аннотации андроида Как создать запрос hql с левым соединением, используя поле из расширяющегося объекта Подстановочный шаблон дженериков Котлина с расширением Параметр, заданный как ненулевой, равен null в массиве ArrayAdaper Есть ли лучший способ для фильтра null в списке? Почему unregisterReceiver () никогда не вызывает onServiceDisconnected? transformClassesWithDesugar построить ошибку после обновления до AS 3.0 Canary 6 java.lang.NoSuchMethodException при попытке запуска приложения TornadoFX Воспроизведение звуков из сырого файла в Котлине Kotlin не может идентифицировать параметры, если явно не указано Неразрешенная ссылка async в Котлине