Junior
O que é o modificador de acesso 'internal' em Kotlin e como usá-lo?
sobes.tech IA
Resposta da IA
O modificador de acesso internal em Kotlin significa que a declaração é visível dentro do mesmo módulo. Um módulo pode ser um conjunto de ficheiros Kotlin compilados juntos, por exemplo:
- Um módulo Gradle (conjunto de código fonte).
- Um módulo Maven.
- Um conjunto de código Ant.
Isto é útil para esconder detalhes de implementação dentro do módulo, tornando-os inacessíveis ao código de outros módulos.
Pode usar internal com:
- Classes
- Interfaces
- Objetos (object)
- Funções
- Propriedades
- Construtores
Exemplo de uso:
// Módulo "module1"
package com.example.module1
internal class InternalClass {
internal fun internalFunction() {
// Este código é visível apenas dentro de module1
}
}
// Este objeto também é visível apenas dentro de module1
internal object InternalObject {
internal val internalProperty = "Valor interno"
}
// Módulo "module1"
package com.example.module1
fun someFunctionInModule1() {
val internalCls = InternalClass() // Disponível
internalCls.internalFunction() // Disponível
println(InternalObject.internalProperty) // Disponível
}
// Módulo "module2"
package com.example.module2
import com.example.module1.InternalClass // Erro de compilação
import com.example.module1.InternalObject // Erro de compilação
fun someFunctionInModule2() {
// Não é possível criar uma instância de InternalClass ou aceder a InternalObject
// val internalCls = InternalClass() // Não disponível
// println(InternalObject.internalProperty) // Não disponível
}
A principal diferença em relação a public (visível em todo o lado), private (apenas dentro da classe) e protected (dentro da classe e das suas subclasses) reside no nível de visibilidade por módulos.