android - Kotlin 无法识别类型参数

标签 android gson kotlin

使用 gson 和改造并创建了一个 JsonDeserializer。

在java中,类定义为:

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

在 Kotlin 中,它被定义为:

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

Java 类在注册到 GSON 后按预期调用。永远不会调用 Kotlin 类。

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);
}

知道为什么吗?

最佳答案

不幸的是,没有任何建议对我有用。我将调用类从 java 转换为 kotlin,因为在过去,在 kotlin 中调用 java 类类型对我来说很容易工作……而且成功了。

我最初尝试从 java 类调用 kotlin 数组类的尝试仍然不成功,但我能够使配置正常工作,所以我称之为完成。

将 OP 中的配置 java 代码转换为 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)
    }

关于android - Kotlin 无法识别类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529530/

相关文章:

spring-boot - Intellij中的kotlin和spring引导错误

java - 房间递归关系解决方法

java - 在给定文件名的图库应用程序中显示照片

Android:根据设备的当前时间格式更改时间格式

android - 应用程式套件语言分割似乎无法处理区域

java - 在android中删除一行后如何显示更新的数据库?

android-studio - 将gson依赖项从2.7升级到2.8失败

intellij-idea - 高效的 map 和过滤器组合与标准库

java - 使用Proguard从Android类中删除xml批注

java - 使用客户模型的 Gson 反序列化