Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is this Kotlin class property not public?

I've got an app that is regularly using classes written in Kotlin which are accessed by other classes and their methods written in Java.

I had the following class in Java:

public class MyDataClass {
    public String color;
    public String action;
}

I've decided to move it to Kotlin:

class MyDataClass {
    var color: String = ""
    var action: String = ""
}

Upon recompiling, I'm now getting the following error message:

/myPath/MyApp.java:[93,20] color has private access in myapp.command.MyDataClass

I get a similar error for action.

Per the Kotlin reference, the default visibility modifier for class and properties (and a bunch of other things) is public.

Why are these properties being treated as private?

like image 897
Jonathan M Avatar asked Mar 04 '23 09:03

Jonathan M


1 Answers

Because it's a private field with a public getter and a public setter. You cannot access fields directly in Kotlin, everything is properties.

Refer to: https://kotlinlang.org/docs/reference/properties.html#backing-fields

like image 89
EpicPandaForce Avatar answered Mar 13 '23 03:03

EpicPandaForce