Middle+
Mi történik, ha Java-kódból hozzáférsz egy Kotlin-ban megvalósított objektum belső (internal) mezőjéhez?
sobes.tech MI
Válasz az MI-től
Hiba fordulhat elő fordítási hibával.
// Kotlin kód
class MyClass {
internal val internalProperty: String = "Belső érték"
}
// Java kód, amely megpróbál hozzáférni a belső tulajdonsághoz
public class JavaClass {
public void accessInternalProperty() {
MyClass myObject = new MyClass();
// Ez a sor fordítási hibát okoz
// System.out.println(myObject.internalProperty);
}
}
Az internal láthatóság Kotlinban azt jelenti, hogy a osztálytag csak ugyanazon a modullal belül látható. Java szempontjából ez hasonló a package-private láthatósághoz, de ez minden osztályra vonatkozik ugyanabban a Kotlin fordítási modulban, nem csak ugyanabban a csomagban. A Java fordító nem fér hozzá közvetlenül a Kotlin internal tagokhoz más modulokból (még akkor sem, ha ugyanabban a csomagban vannak), ami fordítási hibához vezet. A Kotlin fordító speciális neveket generál az internal tagokhoz, amelyek tartalmazzák a modul nevét, hogy megakadályozzák a külső hozzáférést a modulon kívülről.