1.1 --- a/samples/friendpackage/src/implpkg/Accessor.java Sat Jun 14 09:55:03 2008 +0200
1.2 +++ b/samples/friendpackage/src/implpkg/Accessor.java Sat Jun 14 09:55:04 2008 +0200
1.3 @@ -22,13 +22,27 @@
1.4 */
1.5 // BEGIN: design.less.friend.Accessor
1.6 public abstract class Accessor {
1.7 - public static Accessor DEFAULT;
1.8 - static {
1.9 + private static volatile Accessor DEFAULT;
1.10 + public static Accessor getDefault() {
1.11 + Accessor a = DEFAULT;
1.12 + if (a != null) {
1.13 + return a;
1.14 + }
1.15 +
1.16 try {
1.17 Class.forName(Item.class.getName(), true, Item.class.getClassLoader());
1.18 } catch (Exception ex) {
1.19 ex.printStackTrace();
1.20 }
1.21 +
1.22 + return DEFAULT;
1.23 + }
1.24 +
1.25 + public static void setDefault(Accessor accessor) {
1.26 + if (DEFAULT != null) {
1.27 + throw new IllegalStateException();
1.28 + }
1.29 + DEFAULT = accessor;
1.30 }
1.31
1.32 public Accessor() {