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.