@WannaCreative

Зачем нужен void initialize?

Прочитал, что void initialize нужен для валидности объектов, но ничего из этого не понял.

В чем разница между
public class Solution {

    public static String name = "Daniil";

    public void initialize(String name){
        this.name = name;
    }

    public static void main(String[] args){
        System.out.print(name);
    }

}


И этим
public class Solution {

    public static void main(String[] args){
        String name = "Daniil";
        System.out.print(name);
    }

}
  • Вопрос задан
  • 2212 просмотров
Решения вопроса 1
AlexXYZ
@AlexXYZ
O Keep Clear O
Обычно такие "штуки" делают не для "обычных" конструкторов объектов, а для сложных классов. Например, в C# initialize используются в конструкторах GUI-шных компонентов, если вы, например, их расширяете. В этом случае требуется установка многих значений по умолчанию, смысл которых иногда не ясен, да и пока не важен (особенно, когда нужно хоть как-то запустить для примера). Но если вы пишите свои собственные классы, то с вероятностью 99% вы напишите свой инициализатор и валидатор, если он вам вообще понадобится. Так что принципиальной разницы в листингах в вашем примере нет. Результат же получен одинаковый? Просто разными способами.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zolt85
@zolt85
Программист
Принципиальная разница в двух листингах такова:
- в первом, переменная name будет инициализирована при загрузке класса classloader-ом и значение этой переменной будет одинаково для всех инстансов этого класса. Уровень доступа к переменной публичный, т.е. получить значение можно обратившись к Solution.name. Для чего сделан метод initialize не понятно.

- во втором, переменная name будет создана и инициализирована при вызове метода main (не раньше), и область видимости ее будет ограничена областью метода main.

как-то так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы