Intereting Posts
Как сделать цикл, как указано ниже, на языке программирования kotlin? Присвоение свойств объекту javascript с использованием динамических имен свойств java.lang.NoSuchMethodException: com … Сотрудник. <init> () Отсутствует причина сбоя в консоли разработчика Уведомления Android не отображаются на эмуляторе, запущенном API 27 Как я могу использовать базу данных пользовательского интерфейса Firebase с Kotlin См. Общий тип в Котлине Почему в Котлине правильны оба окна box1 и val box2? Kotlin: как преобразовать тест, который использует Thread.sleep для RxJava TestScheduler Мне просто не кажется, что мой Kotlin Recycler Multiple View Code разобрался Почему .map в mutableList фактически не изменяет значения внутри List в Kotlin? Как писать while loop с ответомInputStream.read в kotlin android – – while ((i = responseInputStream.read (byteContainer)) Что означает функция приостановки в Kotlin Coroutine Android SpeechRecognizer не запускается снова Android Kotlin не может использовать list.sort () с lambda

Аргумент типа не распознан в Котлине

Используя gson и retrofit и создайте JsonDeserializer.

В java класс определяется как:

public class Test implements JsonDeserializer<NavigationMenu[]> {... 

В Котлине он определяется как:

 class NavigationMenuArrayDeserializer : JsonDeserializer<Array<NavigationMenu>> {... 

Класс Java называется ожидаемым после регистрации в GSON. Класс Котлин никогда не называется.

 Retrofit jsonClient = new Retrofit .Builder() .baseUrl(baseUrl) .client(okHttpClient) .addConverterFactory(getGsonConverter()) .build(); 

 private GsonConverterFactory getGsonConverter() { GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setLenient(); gsonBuilder.registerTypeAdapter(NavigationMenu[].class, new NavigationMenuArrayDeserializer()); Gson gson = gsonBuilder.create(); return GsonConverterFactory.create(gson); } 

Любая идея почему?

Solutions Collecting From Web of "Аргумент типа не распознан в Котлине"

К сожалению, никаких предложений для меня не работало. Я преобразовал вызывающий класс из java в kotlin, поскольку вызовы типов классов java в kotlin легко сработали для меня в прошлом … и это сделало трюк.

Моя первоначальная попытка вызвать класс класса kotlin из класса java по-прежнему не увенчалась успехом, но я смог настроить конфигурацию, поэтому я называю это полным.

Преобразование кода конфигурации Java в OP в Kotlin сделало трюк:

 private val gsonConverter: GsonConverterFactory get() { val gsonBuilder = GsonBuilder() gsonBuilder.setLenient() gsonBuilder.registerTypeAdapter(Array<NavigationMenu>::class.java, NavigationMenuArrayDeserializer()) val gson = gsonBuilder.create() return GsonConverterFactory.create(gson) } 

Вы можете попробовать использовать TypeToken следующим образом.

 private GsonConverterFactory getGsonConverter() { val type = object : TypeToken< ArrayList < NavigationMenu >>(){}.getType() GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setLenient(); gsonBuilder.registerTypeAdapter(type, new NavigationMenuArrayDeserializer()); Gson gson = gsonBuilder.create(); return GsonConverterFactory.create(gson); } 

Я решил аналогичную проблему, используя класс массива. Попробуйте что-то вроде этого:

 val clazz = (Array<NavigationMenu>::class).java gson.fromJson(json, clazz) 

Надеюсь, это поможет.