Sobes.tech
Junior

Cos'è il modificatore di accesso 'internal' in Kotlin e come usarlo?

sobes.tech AI

Risposta dell'AI

Il modificatore di accesso internal in Kotlin significa che la dichiarazione è visibile all’interno dello stesso modulo. Un modulo può essere un insieme di file Kotlin compilati insieme, ad esempio:

  • Un modulo Gradle (insieme di codice sorgente).
  • Un modulo Maven.
  • Un insieme di codice Ant.

Questo è utile per nascondere i dettagli di implementazione all’interno del modulo, rendendoli inaccessibili al codice di altri moduli.

Può essere usato internal con:

  • Classi
  • Interfacce
  • Oggetti (object)
  • Funzioni
  • Proprietà
  • Costruttori

Esempio di utilizzo:

// Modulo "module1"
package com.example.module1

internal class InternalClass {
    internal fun internalFunction() {
        // Questo codice è visibile solo all’interno di module1
    }
}

// Questo oggetto è anch’esso visibile solo all’interno di module1
internal object InternalObject {
    internal val internalProperty = "Valore interno"
}
// Modulo "module1"
package com.example.module1

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

import com.example.module1.InternalClass // Errore di compilazione
import com.example.module1.InternalObject // Errore di compilazione

fun someFunctionInModule2() {
    // Non è possibile creare un’istanza di InternalClass o accedere a InternalObject
    // val internalCls = InternalClass() // Non disponibile
    // println(InternalObject.internalProperty) // Non disponibile
}

La principale differenza rispetto a public (visibile ovunque), private (solo all’interno della classe) e protected (all’interno della classe e delle sue sottoclassi) risiede nel livello di visibilità per i moduli.