java.lang.Object | +--java.beans.FeatureDescriptor | +--java.beans.PropertyDescriptor
PropertyDescriptor(java.lang.String name, java.lang.Class beanClass) Create a new PropertyDescriptor by introspection. |
PropertyDescriptor(java.lang.String name, java.lang.Class beanClass, java.lang.String getMethodName, java.lang.String setMethodName) Create a new PropertyDescriptor by introspection. |
PropertyDescriptor(java.lang.String name, java.lang.reflect.Method getMethod, java.lang.reflect.Method setMethod) Create a new PropertyDescriptor using explicit Methods. |
java.lang.Class | getPropertyEditorClass() Get the PropertyEditor class. |
java.lang.Class | getPropertyType() Get the property type. |
java.lang.reflect.Method | getReadMethod() Get the get method. |
java.lang.reflect.Method | getWriteMethod() Get the set method. |
boolean | isBound() Get whether the property is bound. |
boolean | isConstrained() Get whether the property is constrained. |
void | setBound(boolean bound) Set whether the property is bound. |
void | setConstrained(boolean constrained) Set whether the property is constrained. |
void | setPropertyEditorClass(java.lang.Class propertyEditorClass) Set the PropertyEditor class. |
public PropertyDescriptor(java.lang.String name, java.lang.Class beanClass)
get<name>()
(or, optionally, if the property is boolean,
is<name>()
) and
set<name>()
in class
<beanClass>
, where <name> has its
first letter capitalized by the constructor.Implementation note: If there is both are both isXXX and getXXX methods, the former is used in preference to the latter. We do not check that an isXXX method returns a boolean. In both cases, this matches the behaviour of JDK 1.4
name
- the programmatic name of the property, usually
starting with a lowercase letter (e.g.beanClass
- the class the get and set methods live in.IntrospectionException
- if the methods are not found
or invalid.public PropertyDescriptor(java.lang.String name, java.lang.Class beanClass, java.lang.String getMethodName, java.lang.String setMethodName)
Implementation note: If there is a get method (or boolean isXXX() method), then the return type of that method is used to find the set method. If there is no get method, then the set method is searched for exhaustively.
Spec note: If there is no get method and multiple set methods with the same name and a single parameter (different type of course), then an IntrospectionException is thrown. While Sun's spec does not state this, it can make Bean behavior different on different systems (since method order is not guaranteed) and as such, can be treated as a bug in the spec. I am not aware of whether Sun's implementation catches this.
name
- the programmatic name of the property, usually
starting with a lowercase letter (e.g.beanClass
- the class the get and set methods live in.getMethodName
- the name of the get method.setMethodName
- the name of the set method.IntrospectionException
- if the methods are not found
or invalid.public PropertyDescriptor(java.lang.String name, java.lang.reflect.Method getMethod, java.lang.reflect.Method setMethod)
name
- the programmatic name of the property, usually
starting with a lowercase letter (e.g.getMethod
- the get method.setMethod
- the set method.IntrospectionException
- if the methods are not found
or invalid.public Class getPropertyEditorClass()
public Class getPropertyType()
public Method getReadMethod()
public Method getWriteMethod()
public boolean isBound()
public boolean isConstrained()
public void setBound(boolean bound)
If these things are not true, then the behavior of the system will be undefined.
When a property is bound, its set method is required to fire the
PropertyChangeListener.propertyChange())
event
after the value has changed.
bound
- whether the property is bound or not.public void setConstrained(boolean constrained)
java.beans.PropertyVetoException
(or subclass thereof) and the bean implements addVetoableChangeListener()
and removeVetoableChangeListener(), then setConstrained(true) may safely
be called. Otherwise, the system behavior is undefined.
Spec note: given those strict parameters, it would be nice if it
got set automatically by detection, but oh well.When a property is constrained, its set method is required to:
VetoableChangeListener.vetoableChange()
event notifying others of the change and allowing them a chance to
say it is a bad thing.constrained
- whether the property is constrained or not.public void setPropertyEditorClass(java.lang.Class propertyEditorClass)
propertyEditorClass
- the PropertyEditor class for this
class to use.
The constraints put on get and set methods are:
<propertyType> <getMethodName>()
void <setMethodName>(<propertyType>)