Zum Inhalt springen
Anjunar/ DOCS

Bean-Properties

BeanIntrospector baut Properties aus JavaBean-Gettern und -Settern, mit dem gleichnamigen Feld, falls es eines gibt.

Modell

get, is und set

Jede Methode getX oder isX ohne Parameter ist eine Property x. Ein setX mit einem Parameter macht sie schreibbar.

scala
import com.anjunar.scala.universe.introspector.BeanIntrospector class Person { private var firstName: String = "Ada" def getFirstName: String = firstName def setFirstName(value: String): Unit = firstName = value } val model = BeanIntrospector.createWithType(classOf[Person]) val property = model.findProperty("firstName") val person = new Person println(property.propertyType.fullName) // java.lang.String println(property.get(person)) // Ada property.set(person, "Grace") println(property.get(person)) // Grace
Properties

Was eine Property bietet

Bean- und annotierte Properties teilen AbstractProperty: ein Name, die Teile, aus denen sie entstand, und die Annotationen aller Teile.

get(instance): Any
Ruft den Getter auf oder liest ohne ihn das Feld.
set(instance, value): Unit
Ruft den Setter auf; wirft ohne ihn IllegalStateException.
isWriteable: Boolean
Ob ein Setter existiert.
propertyType: ResolvedClass
Typ des Getters oder Felds, Primitive gewrappt.
field · getter · setter
Die Teile, jedes davon darf null sein.
annotations
Annotationen von Feld, Getter und Setter zusammen.
Umfang

Deklariert oder geerbt

properties läuft über jede Methode der Hierarchie; declaredProperties nur über die der Klasse selbst.

Scala-vars sind keine Beans

Eine Scala-var wird zu name() und name_$eq, was BeanIntrospector nicht erkennt. Für Scala-Klassen nimm annotierte Properties oder ergänze @BeanProperty.

scala
import scala.beans.BeanProperty class Person { @BeanProperty var firstName: String = "Ada" // adds getFirstName and setFirstName }