1. Java / Говнокод #13064

    +65

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // вот такой вот паттерн инициализации статических переменных во всех классах проекта... 
    private static Properties globalProps = null;
    
    static {
            globalProps = new Properties();
    }

    вот такой вот паттерн инициализации статических переменных во всех классах проекта...ин-лайн инициализацию автору делать почему то не хотелось...и ведь вроде не индус писал, а белый человек...

    Запостил: aa_kovalev, 29 Мая 2013

    Комментарии (7) RSS

    • обычный потокоопасный синглтон
      Ответить
      • а почему потокоопасный?
        Ответить
        • нет синхронизации на класслоадерах
          Ответить
          • Кагбэ один и тот же класс, загруженный в разных класслоадерах - с точки зрения JVM два разных класса.

            Так что всё хорошо. Статическая инициализация классов потокобезопасна. Если бы она не была таковой, Блох не советовал бы применять паттерн instance holder. Более того, тогда вообще никак нельзя было бы гарантировать потокобезопасность, потому что инициализация любого объекта блокировки в свою очередь была бы небезопасной.

            Вообще такая конструкция эквивалентна обычной инициализации без static-блока.
            Ответить
            • про разные класслоадеры вспомнилось:
              ClassCastException: Integer can not be casted to Integer
              Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий