gpt4 book ai didi

spring - Kotlin 中的泛型方法无法识别类型

转载 作者:行者123 更新时间:2023-12-02 13:22:27 28 4
gpt4 key购买 nike

我有这个通用方法的接口(interface):

interface IInterface {
fun <T> test(body: T)
}

我想像这样实现这个接口(interface):
class MyClass: IInterface {
override fun <JsonObject> test(body: JsonObject) {
if (body is com.google.gson.JsonObject) {

}
}
}

我的问题是类型 JsonObject 无法识别,如“com.google.gson.JsonObject”。所以我可以在我的编译器(intelliJ)中毫无错误地编写这段代码。
override fun <NotExistingClass__> test(body: NotExistingClass__) {

那么,如何从 Gson 定义 JsonObject 的 T 类型呢?此代码不起作用:
override fun <com.google.gson.JsonObject> test(body: com.google.gson.JsonObject)

谢谢

最佳答案

这个interface :

interface IInterface {
fun <T> test(body: T)
}

不是通用的,但它有一个通用的方法。如果您想使其通用,请执行以下操作:
interface IInterface<T> {
fun test(body: T)
}

那么您的实现将如下所示:
class MyClass: IInterface<JsonObject> {
override fun test(body: JsonObject) {
if (body is com.google.gson.JsonObject) {

}
}
}

如果出于某种原因您仍需要泛型方法,则必须在每个调用站点传递泛型类型参数:
someInstance.test<JsonObject>(obj)

关于spring - Kotlin 中的泛型方法无法识别类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52715738/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com