You probably want to get class properties, not fields. This can be done as follows:
MyClass::class.declaredMemberProperties
Getting fields is also possible through Java reflection:
MyClass::class.java.declaredFields
But fields are more likely an implementation in Kotlin, because some properties cannot have fields.
As for visibility, for properties you can check getter visibility modifiers:
val p = MyClass::class.declaredMemberProperties.first()
val modifiers = p.javaGetter?.modifiers
: null private val @JvmField. p.javaField.
, modifiers null, Modifier.isPrivate(...).
Kotlin getter setter, , , .