T
- The class on which the property is declared.V
- The type that this property represents.public abstract class Property<T,V> extends Object
set(Object, Object)
or get(Object)
methods can be implemented in terms of the private fields of the host object, or via "setter" and
"getter" methods or by some other mechanism, as appropriate.构造器和说明 |
---|
Property(Class<V> type,
String name)
A constructor that takes an identifying name and
type for the property. |
限定符和类型 | 方法和说明 |
---|---|
abstract V |
get(T object)
Returns the current value that this property represents on the given
object . |
String |
getName()
Returns the name for this property.
|
Class<V> |
getType()
Returns the type for this property.
|
boolean |
isReadOnly()
Returns true if the
set(Object, Object) method does not set the value on the target
object (in which case the set() method should throw a NoSuchPropertyException exception). |
static <T,V> Property<T,V> |
of(Class<T> hostType,
Class<V> valueType,
String name)
This factory method creates and returns a Property given the
class and
name parameters, where the "name" parameter represents either:
a public getName() method on the class which takes no arguments, plus an
optional public setName() method which takes a value of the same type
returned by getName()
a public isName() method on the class which takes no arguments, plus an
optional public setName() method which takes a value of the same type
returned by isName()
a public name field on the class
If either of the get/is method alternatives is found on the class, but an appropriate
setName() method is not found, the Property will be
readOnly . |
void |
set(T object,
V value)
Sets the value on
object which this property represents. |
public static <T,V> Property<T,V> of(Class<T> hostType, Class<V> valueType, String name)
class
and
name
parameters, where the "name"
parameter represents either:
getName()
method on the class which takes no arguments, plus an
optional public setName()
method which takes a value of the same type
returned by getName()
isName()
method on the class which takes no arguments, plus an
optional public setName()
method which takes a value of the same type
returned by isName()
name
field on the class
If either of the get/is method alternatives is found on the class, but an appropriate
setName()
method is not found, the Property
will be
readOnly
. Calling the set(Object, Object)
method on such
a property is allowed, but will have no effect.
If neither the methods nor the field are found on the class a
NoSuchPropertyException
exception will be thrown.
public boolean isReadOnly()
set(Object, Object)
method does not set the value on the target
object (in which case the set()
method should throw a NoSuchPropertyException
exception). This may happen if the Property wraps functionality that
allows querying the underlying value but not setting it. For example, the of(Class,
Class, String)
factory method may return a Property with name "foo" for an object that has
only a getFoo()
or isFoo()
method, but no matching
setFoo()
method.public void set(T object, V value)
object
which this property represents. If the method is unable
to set the value on the target object it will throw an UnsupportedOperationException
exception.public abstract V get(T object)
object
.public String getName()