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.