Как скрыть интерфейс в другом интерфейсе? - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу написать библиотеку Android, которая в свою очередь использует другую библиотеку Androd.

Допустим, я хочу написать libHigh, которая использует другую libLow

Есть интерфейсв libLow:

interface LowLevelInterface{
   fun methodA()
}

, и я реализую это в своей библиотеке более высокого уровня libHigh:

open class OpenClassImpl : LowLevelInterface {
  override fun methodA(){//..}
}

Это «открытый» класс, потому что позже на уровне приложения я ожидаю расширить сOpenClassImpl. Но я не хочу, чтобы интерфейс «LowLevelInterface» был виден для последующего использования верхнего уровня приложения.

Как скрыть интерфейс от libLow для верхнего уровня приложения?

1 Ответ

0 голосов
/ 22 февраля 2019

Это зависит от вашего существующего кода, будет ли это работать, или сколько усилий будет, но вы можете иметь свойство, реализующее интерфейс, вместо того, чтобы делать это напрямую:

open class OpenClassImpl {
    // or protected/private
    internal val lowLevelImpl: LowLevelInterface = { 
        // can access privates of OpenClassImpl here
    }
}

и изменить соответствующийпризывает передать его.

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