samples/friendpackage/src/implpkg/Accessor.java
changeset 124 6270b19ab8db
parent 123 920e95b47036
child 127 07696c62f340
     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() {