Прошу объяснить, чем опасна "слепая инициализация" на каком-нибудь примере из практики?
public class ShopActivity {
private int revenue = Prefs.getRevenue();
}
Всегда ли нужно выносить код инициализации переменных в конструкторе? Когда можно сделать исключение?
Ответ
Компилятор переносит инициализацию полей в месте объявления (как и инициализацию полей в нестатических блоках) в конструктор (точнее говоря, во все имеющиеся).
Инициализация полей при объявлении и инициализация полей в конструкторе – это практически одно и то же. Разница лишь в том, что:
Инициализация полей в месте объявления происходит перед инициализацией полей в конструкторе.
В случае инициализации полей в месте объявления невозможно перехватить исключение (при этом, если исключение checked, то нужно будет создать конструктор, который далее будет прокидывать возникшее исключение).
Комментариев нет:
Отправить комментарий