Middle+
Mis juhtub, kui Java-koodist pääseb ligi Kotlinis rakendatud objekti sisemisele (internal) väljale?
sobes.tech AI
Vastus AI-lt
Tõenäoliselt tekib kompileerimisviga.
// Kotlin kood
class MyClass {
internal val internalProperty: String = "Sisemine väärtus"
}
// Java kood, mis üritab sisemist omadust kasutada
public class JavaClass {
public void accessInternalProperty() {
MyClass myObject = new MyClass();
// See rida põhjustab kompileerimisvea
// System.out.println(myObject.internalProperty);
}
}
Kotlinis tähendab internal nähtavus, et klassi liige on nähtav ainult sama mooduli sees. Java vaatenurgast on see sarnane package-private nähtavusega, kuid see kehtib kõigi klasside kohta samas Kotlin moodulis ning mitte ainult samas paketis. Java kompilaatoril puudub otsene juurdepääs Kotlin internal liikmetele teistest moodulitest (isegi kui nad on samas paketis), mis põhjustab kompileerimisvea. Kotlin genereerib spetsiaalsed nimed internal liikmetele, mis sisaldavad mooduli nime, et takistada nende kasutamist väljaspool moodulit.