Kotlin "internal" visibility modifier in Android-ThrowExceptions

Exception or error:

Suppose you’re writing an Android project (not a library). All the files are compiled together so… is there any sense to use an internal visibility modifier in this case?

How to solve:

You can have multiple Gradle modules that depend on each other within a single Android application, in that case, internal restricts visibility to within a given module. This could be useful if, for example, you have a separate data module that handles database and network tasks, and you only want to expose a couple interfaces from that module, but not their implementations.

Otherwise, if you’re not using multiple modules, and your entire application is just in the default app module, then the internal modifier makes no difference in comparison to the default public visibility.


No, because you would only have one module. Take a look at the definition.

The internal visibility modifier means that the member is visible
within the same module. More specifically, a module is a set of Kotlin
files compiled together:

  • an IntelliJ IDEA module;
  • a Maven project; a Gradle source set;
  • a set of files compiled with one invocation of the Ant task.


internal only has effect across several modules.

Leave a Reply

Your email address will not be published. Required fields are marked *