groovy.beans
@Documented @Retention(value=SOURCE) @Target(value={FIELD,TYPE}) public @interface Bindable
class Person { @groovy.beans.Bindable String firstName @groovy.beans.Bindable def zipCode }The above example will generate code that is similar to the next snippet. Notice the difference between a String property and a def/Object property:
public class Person { @groovy.beans.Bindable private java.lang.String firstName @groovy.beans.Bindable private java.lang.Object zipCode final private java.beans.PropertyChangeSupport this$propertyChangeSupport public Person() { this$propertyChangeSupport = new java.beans.PropertyChangeSupport(this) } public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) { this$propertyChangeSupport.addPropertyChangeListener(listener) } public void addPropertyChangeListener(java.lang.String name, java.beans.PropertyChangeListener listener) { this$propertyChangeSupport.addPropertyChangeListener(name, listener) } public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) { this$propertyChangeSupport.removePropertyChangeListener(listener) } public void removePropertyChangeListener(java.lang.String name, java.beans.PropertyChangeListener listener) { this$propertyChangeSupport.removePropertyChangeListener(name, listener) } public void firePropertyChange(java.lang.String name, java.lang.Object oldValue, java.lang.Object newValue) { this$propertyChangeSupport.firePropertyChange(name, oldValue, newValue) } public java.beans.PropertyChangeListener[] getPropertyChangeListeners() { return this$propertyChangeSupport.getPropertyChangeListeners() } public java.beans.PropertyChangeListener[] getPropertyChangeListeners(java.lang.String name) { return this$propertyChangeSupport.getPropertyChangeListeners(name) } public void setFirstName(java.lang.String value) { this.firePropertyChange('firstName', firstName, firstName = value ) } public void setZipCode(java.lang.Object value) { this.firePropertyChange('zipCode', zipCode, zipCode = value ) } }
BindableASTTransformation