какая польза от объявления объекта интерфейса внутри интерфейса для kotlin - PullRequest
0 голосов
/ 19 ноября 2018

например

Интерфейс

interface StateInterface {

    val variationTypes: List<VariationType>
        get() = emptyList()

    object EMPTY : StateInterface
}

, затем он был объявлен внутри actionbean, как это

open val stateInterface: StateInterface = StateInterface.EMPTY

Это всеэто просто создает новый интерфейс?Почему мы должны делать это так?

1 Ответ

0 голосов
/ 19 ноября 2018

Вам не нужно делать это таким образом.

interface StateInterface {

    val variationTypes: List<VariationType>
        get() = emptyList()

}

object EMPTY : StateInterface

Работало бы нормально, но автор решил, что они хотят, чтобы использование читало StateInterface.EMPTY, а не просто EMPTY.

Одним из преимуществ или причин выбора этого способа является то, что после ввода StateInterface. в завершении кода появляется EMPTY, что облегчает поиск.

Code Completion

Другое преимущество читабельности заключается в том, что любому, кто ссылается на StateInterface.EMPTY, не нужна дополнительная строка import, которая была бы нужна, если бы это был не вложенный объект.

import com.example.StateInterface

val x = StateInterface.EMPTY

Этот бит open val stateInterface: StateInterface = StateInterface.EMPTYэто свойство объекта.Это open, поэтому реализации потомков могут override это.Если они этого не делают, StateInterface.EMPTY будет значением этого свойства.

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