Is it possible to expose an internal class via an interface?

Is it possible to expose an internal class via an interface?

I have something like this:

internal class ClassA
interface ClassB

internal class ClassBImpl(private val classA: ClassA) : ClassB

ClassA, ClassB and ClassBImpl are in the same module. I only want to expose ClassB to other modules.

Yes, we can do that. Just expose internal implementation as public interface and it will work as you need:

public fun foo(): ClassB = ClassBImpl(ClassA())
1 Like