kotlin Я хочу получить случайный класс, который наследует определенный интерфейс - PullRequest
0 голосов
/ 11 апреля 2020

Давайте предположим, что у меня один интерфейс. interface example И у меня есть класс A, B, C, который наследует example (и я сделаю больше). Мне нужно получить класс, который наследует example в случайном порядке. Поэтому я хочу сохранить информацию A, B, C в виде списка. Но у них есть конструктор, который требует ввода пользователя. Поэтому мне нужно сохранить классы, но экземпляр. Как я могу это сделать? Если есть лучший способ решить эту проблему (не сохраняя классы в виде списка), пожалуйста, дайте мне совет.

1 Ответ

0 голосов
/ 13 апреля 2020

Вот пример того, как вы можете это сделать:

import kotlin.reflect.full.primaryConstructor

interface MyInterface {
    fun doSomething()
}

class A(param1: Int, param2: Int) : MyInterface {
    override fun doSomething() {
        TODO("Not yet implemented")
    }
}

class B(param1: Int, param2: Int) : MyInterface {
    override fun doSomething() {
        TODO("Not yet implemented")
    }
}

fun main() {
    val list = listOf(A::class.primaryConstructor, B::class.primaryConstructor)
    val instance = list.random()?.call(1, 2)
    instance?.doSomething()
}

Но я думаю, что вы жестко закодируете классы в списке. Если вы хотите сделать это динамически, взгляните на эти Find Java классы, реализующие интерфейс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...