Java Singleton - verhindern Sie mehrfache Kreation durch Reflexion

Habe ich ein singleton ist wie diese.

public class BookingFactory {

    private final static BookingFactory instance;

    static {
        instance = new BookingFactory();
    }

    public static BookingFactory getInstance() {
        return instance;
    }

    private BookingFactory() {
        System.out.println("Object is created.");
    }
}

public class Test  {
    BookingFactory instance = BookingFactory.getInstance();
    instance = BookingFactory.getInstance();

    Class<?> clazz = Class.forName("com.test.BookingFactory");

    Constructor pvtConstructor = clazz.getDeclaredConstructors()[0];

    //Set its access control
    pvtConstructor.setAccessible(true);

    //Invoke Private Constructor
    BookingFactory notSingleton = (BookingFactory) pvtConstructor.newInstance(null);
}

Wenn ich diesen starte, sah ich mehr als einen Ausdruck Nachricht. Gibt es eine Möglichkeit, dies zu verhindern singleton instanziiert wird mehr als einmal aus dieser Reflexion?

Dank.

InformationsquelleAutor der Frage user826323 | 2011-10-27

Schreibe einen Kommentar