Конвертировать 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
Kotlin – единственный экземпляр класса, не являющегося одиночным? Контравариантность в Котлине В тесте kotlin укажите, как назначить lateinit var Kotlin + Intelij + HtmlUnit: Ни одна из следующих функций не может быть вызвана с предоставленными аргументами Kotlin: как наследовать от подписчика RxJava Использование AnkoLogger с уровнями, отличными от «info» Как использовать kapt из командной строки (с kotlinc)? Android: Как сделать преобразователи типов (для комнаты) универсальными для всех Список объектов в Котлине Kotlin Ошибка: неразрешенная ссылка: merge (для list.merge ()) Как объединить флаги Intent в Котлине как закрыть kotlin coroutines максимальный параллелизм Обновите содержимое фрагмента в разделе PagerAdapter Представление привязки Kotlin: как отличить переменную вида от локальной переменной? Есть ли какая-либо ссылка на временную сложность библиотеки коллекции Kotlin? Функция расширения не создает новый объект Observable