Конструктор интерфейса Kotlin - PullRequest
0 голосов
/ 01 июня 2019

В Kotlin я хотел бы иметь интерфейс, который настаивает на том, чтобы у реализующего класса был определенный конструктор. Примерно так:

interface Inter<T> {
    // Must have constructor (t: T)
}

class Impl(t: String): Inter<String> 

Как этого добиться?

1 Ответ

1 голос
/ 02 июня 2019

Интерфейсы не могут иметь конструкторов в Kotlin.

Интерфейсы могут иметь :

  • объявления абстрактных методов
  • реализации метода
  • абстрактные свойства
  • свойства, которые предоставляют реализации средства доступа

Самое близкое, чего вы можете достичь, - это использовать абстрактный класс или простой класс:

abstract class Foo<T>(val t: T)

class Bar<T>(t: T): Foo<T>(t)

Обратите внимание, что Bar должен вызывать первичный конструктор Foo, но он не должен предоставлять его.

abstract class Foo<T>(val t: T)

class Bar: Foo<String>("Hello")

Итак, это полностью верно:

Bar()

Как видите, вы не можете на самом деле настаивать на том, что у реализующего класса есть определенный конструктор.

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