Basic property interfaces that can be implemented by anyone and their default implementations. A convention was used in which classes starting with the letter W are write only properties and those starting with the letter R are read only. This is accomplished by making the corresponding get/set method respectively protected and only exposing it when necessary.

Properties can be created with the simple "new" syntax such as:

public final Property<Integer> p = new PropertyImpl<Integer>();

Notice we had to write Integer twice, this is a limitation of Java's generics implementation that cannot infer the type before new. Thus bean-properties offer a simpler syntax that does exactly the same things but requires no such duplication:

public final Property<Integer> p = PropertyImpl.create();