Quiero escribir una biblioteca de Android, que a su vez use otra biblioteca de Androd.
Digamos que quiero escribir libHigh que usa otro libLow
Hay una interfaz en libLow:
interface LowLevelInterface{ fun methodA() }e implemento esto en mi biblioteca de nivel superior libHigh:
open class OpenClassImpl : LowLevelInterface { override fun methodA(){//..} } Es una clase 'abierta', porque más adelante en la capa de la aplicación espero extenderme desde OpenClassImpl . Pero no quiero que la interfaz 'LowLevelInterface' sea visible para el uso posterior del nivel superior de la aplicación.
¿Cómo puedo ocultar la interfaz de libLow para el nivel superior de la aplicación?
Depende de su código existente si esto funcionará o cuánto esfuerzo será, pero podría tener una propiedad que implemente la interfaz en lugar de hacerlo directamente:
open class OpenClassImpl { // or protected/private internal val lowLevelImpl: LowLevelInterface = { // can access privates of OpenClassImpl here } }y cambie las llamadas relevantes para pasarlo.