FileDocCategorySizeDatePackage
Property.javaAPI DocAndroid 5.1 API4349Thu Mar 12 22:22:10 GMT 2015android.util

Property

public abstract class Property extends Object
A property is an abstraction that can be used to represent a mutable value that is held in a host object. The Property's {@link #set(Object, Object)} or {@link #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.
param
The class on which the property is declared.
param
The type that this property represents.

Fields Summary
private final String
mName
private final Class
mType
Constructors Summary
public Property(Class type, String name)
A constructor that takes an identifying name and {@link #getType() type} for the property.

        mName = name;
        mType = type;
    
Methods Summary
public abstract Vget(T object)
Returns the current value that this property represents on the given object.

public java.lang.StringgetName()
Returns the name for this property.

        return mName;
    
public java.lang.ClassgetType()
Returns the type for this property.

        return mType;
    
public booleanisReadOnly()
Returns true if the {@link #set(Object, Object)} method does not set the value on the target object (in which case the {@link #set(Object, Object) set()} method should throw a {@link NoSuchPropertyException} exception). This may happen if the Property wraps functionality that allows querying the underlying value but not setting it. For example, the {@link #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.

        return false;
    
public static android.util.Propertyof(java.lang.Class hostType, java.lang.Class valueType, java.lang.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 {@link #isReadOnly() readOnly}. Calling the {@link #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 {@link NoSuchPropertyException} exception will be thrown.

        return new ReflectiveProperty<T, V>(hostType, valueType, name);
    
public voidset(T object, V value)
Sets the value on object which this property represents. If the method is unable to set the value on the target object it will throw an {@link UnsupportedOperationException} exception.

        throw new UnsupportedOperationException("Property " + getName() +" is read-only");