Sobes.tech
Middle+

O que acontece se, a partir do código Java, aceder a um campo interno (internal) de um objeto implementado em Kotlin?

sobes.tech IA

Resposta da IA

Haverá um erro de compilação.

// Código Kotlin
class MyClass {
    internal val internalProperty: String = "Valor interno"
}
// Código Java tentando aceder à propriedade internal
public class JavaClass {
    public void accessInternalProperty() {
        MyClass myObject = new MyClass();
        // Esta linha causará um erro de compilação
        // System.out.println(myObject.internalProperty);
    }
}

A visibilidade internal em Kotlin significa que o membro da classe é visível apenas dentro do mesmo módulo. Do ponto de vista do Java, isto é semelhante à visibilidade package-private, mas aplicável a todas as classes no mesmo módulo de compilação Kotlin, e não apenas no mesmo pacote. O compilador Java não tem acesso direto aos membros internal do Kotlin de outros módulos (mesmo que estejam no mesmo pacote), o que leva a um erro de compilação. O compilador Kotlin gera nomes especiais para os membros internal, que incluem o nome do módulo, com o objetivo de impedir o acesso externo ao módulo.