Sobes.tech
Junior

Wat is de toegangsmodule 'internal' in Kotlin en hoe gebruik je het?

sobes.tech AI

Antwoord van AI

De toegangsspecificator internal in Kotlin betekent dat de declaratie binnen dezelfde module zichtbaar is. Een module kan een set Kotlin-bestanden zijn die samen gecompileerd worden, bijvoorbeeld:

  • Een Gradle-module (broncode set).
  • Een Maven-module.
  • Een Ant-broncode set.

Dit is handig om implementatiedetails binnen de module te verbergen, waardoor ze niet toegankelijk zijn voor code uit andere modules.

internal kan worden gebruikt met:

  • Klassen
  • Interfaces
  • Objecten (object)
  • Functies
  • Eigenschappen
  • Constructeurs

Voorbeeld van gebruik:

// Module "module1"
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Deze code is alleen zichtbaar binnen module1
    }
}

// Dit object is ook alleen zichtbaar binnen module1
internal object InternalObject {
    internal val internalProperty = "Interne waarde"
}
// Module "module1"
package com.example.module1

fun someFunctionInModule1() {
    val internalCls = InternalClass() // Beschikbaar
    internalCls.internalFunction()     // Beschikbaar
    println(InternalObject.internalProperty) // Beschikbaar
}
// Module "module2"
package com.example.module2

import com.example.module1.InternalClass // Compileerfout
import com.example.module1.InternalObject // Compileerfout

fun someFunctionInModule2() {
    // Kan geen instantie van InternalClass maken of toegang krijgen tot InternalObject
    // val internalCls = InternalClass() // Niet beschikbaar
    // println(InternalObject.internalProperty) // Niet beschikbaar
}

Het belangrijkste verschil met public (zichtbaar overal), private (alleen binnen de klasse) en protected (binnen de klasse en haar subklassen) ligt in het module-zichtbaarheidsniveau.