Sobes.tech
Middle+

Wat gebeurt er als je vanuit Java-code toegang krijgt tot een interne (internal) veld van een in Kotlin geïmplementeerd object?

sobes.tech AI

Antwoord van AI

Er zal een compilatiefout optreden.

// Kotlin-code
class MyClass {
    internal val internalProperty: String = "Interne waarde"
}
// Java-code die probeert toegang te krijgen tot interne eigenschap
public class JavaClass {
    public void accessInternalProperty() {
        MyClass myObject = new MyClass();
        // Deze regel zal een compilatiefout veroorzaken
        // System.out.println(myObject.internalProperty);
    }
}

De internal zichtbaarheid in Kotlin betekent dat het lid van de klasse alleen binnen dezelfde module zichtbaar is. Vanuit Java-perspectief is dit vergelijkbaar met package-private zichtbaarheid, maar van toepassing op alle klassen in dezelfde Kotlin-compileermodule, niet alleen in hetzelfde pakket. De Java-compiler heeft geen directe toegang tot internal-leden van Kotlin uit andere modules (zelfs als ze in hetzelfde pakket staan), wat leidt tot een compilatiefout. De Kotlin-compiler genereert speciale namen voor internal-leden die de naam van de module bevatten, om toegang van buiten de module te voorkomen.