Вложенный класс данных в универсальном интерфейсе с использованием Kotlin - PullRequest
0 голосов
/ 11 июня 2018

Как создать универсальный интерфейс с вложенным классом данных, который использует этот универсальный тип в Kotlin?

Примерно так:

interface Exemplary<T> {

    data class Result(val value: T)

    ...
}

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Нет, например, Exemplary<Int>.Result, а просто Exemplary.Result;T нельзя найти, не делая Result универсальным, как в ответе Лукаса.

Но есть альтернатива: внутренние классы. Если вы хотите, чтобы T было исправленодля экземпляра интерфейса, например,

val x: Exemplary<Int> = ...
val y = new x.Result(3)

, вам нужно сделать класс inner, но тогда не может быть data, и вам нужно будет реализовать методысами.

0 голосов
/ 11 июня 2018

Также класс данных должен быть универсальным:

interface Exemplary<T> {

    data class Result<T>(val value: T)

    fun getResult(): Result<T>
}
...