Zum Inhalt springen
Anjunar/ DOCS

Properties

Ein PropertyDescriptor beschreibt eine Property: ihren Typ, ob sie gelesen und geschrieben werden kann, ihre Sichtbarkeit und ihre Annotationen. Der Accessor ist nur da, wenn du Accessoren angefordert hast.

Member

Was eine Property wird

vals, vars und parameterlose defs einer Klasse sind Properties. Eine var ist schreibbar, alles andere nur lesbar.

Account, live

Jede Property, die das Makro gefunden hat, mit Typ, Sichtbarkeit und Zugriff.

masked
java.lang.String · public · read-only
number
java.lang.String · public · read-only
owner
java.lang.String · public · read/write
scala
class Account { var owner: String = "Ada" val number: String = "DE-001" protected var level: Int = 1 private var pin: Int = 1234 def masked: String = s"****${pin % 100}" } ReflectMacros.reflect[Account].properties
Filter

Lesbare und schreibbare Mengen

Der Deskriptor filtert für dich. getWriteableProperties braucht ein Formular oder ein JSON-Leser, getReadableProperties eine Ansicht oder ein Schreiber.

account.getWriteableProperties.map(_.name)
owner
account.hasProperty("owner")
true
account.getProperty("owner").flatMap(_.accessor)
None
name · propertyType
Name und ein TypeDescriptor des Typs.
isReadable · isWriteable
Ob Getter und Setter existieren.
isPublic · isProtected · isPrivate
Die deklarierte Sichtbarkeit.
annotations · getAnnotation(name) · hasAnnotation(name)
Annotationen mit ihren Argumenten.
accessor: Option[PropertyAccessor[Any, Any]]
Nur von reflectWithAccessors und der Registry gefüllt.