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.