Sobes.tech
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.