Тип не распознан с помощью метода дженериков в Котлине - PullRequest
0 голосов
/ 09 октября 2018

У меня есть этот интерфейс с этим универсальным методом:

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

Я хочу реализовать этот интерфейс следующим образом:

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__) {

Итак, как определить тип T для JsonObject из Gson?этот код не работает:

override fun <com.google.gson.JsonObject> test(body: com.google.gson.JsonObject)

Спасибо

1 Ответ

0 голосов
/ 09 октября 2018

Это interface:

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

не является универсальным, но имеет универсальный метод .Если вы хотите сделать его универсальным, сделайте это:

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

, тогда ваша реализация будет выглядеть так:передать параметр универсального типа на каждом сайте вызова:

someInstance.test<JsonObject>(obj)
...