Addressing issues at http://wiki.apidesign.org/index.php/Allow_Access_Only_From_Friend_Code
3 import implpkg.Accessor;
4 import javax.swing.event.ChangeEvent;
5 import javax.swing.event.ChangeListener;
7 /** Class in API that everyone can use.
9 * @author Jaroslav Tulach
11 // BEGIN: design.less.friend.Item
12 public final class Item {
14 private ChangeListener listener;
16 // BEGIN: design.less.friend.Item.static
18 Accessor.setDefault(new AccessorImpl());
20 // END: design.less.friend.Item.static
22 /** Only friends can create instances. */
26 /** Anyone can change value of the item.
28 public void setValue(int newValue) {
30 ChangeListener l = listener;
32 l.stateChanged(new ChangeEvent(this));
36 /** Anyone can get the value of the item.
38 public int getValue() {
42 /** Only friends can listen to changes.
44 void addChangeListener(ChangeListener l) {
45 assert listener == null;
50 // END: design.less.friend.Item