почему мы должны хранить определение urimatcher в статических цветочных скобках в контент-провайдере? - PullRequest
3 голосов
/ 09 мая 2011

У меня возникли сомнения относительно поставщика контента.
Каждый раз, когда я пишу контент-провайдер, я помещаю определение URI MATCHER в статические скобки, но URI MATCHER объявляется частным членом данных класса. В статические скобки помещается только определение (новый UriMatcher).

Кто-нибудь, пожалуйста, дайте мне знать причину. Я попытался поискать в Google, но не смог найти ответ. Я тоже попробую, пожалуйста, дайте мне знать, если кто-нибудь уже знает.

Спасибо и всего наилучшего,
SSuman185

1 Ответ

6 голосов
/ 09 мая 2011

Это блок статической инициализации .Когда вы определяете переменную-член или класс, значение должно помещаться на одной строке (даже если вы пробелите его больше), и оно не может содержать сложную логику.

Для переменных-членов вы можете выполнить эту сложную инициализацию вКонструктор.

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

Закрытый член просто означает, что переменная недоступна для других классов, она все еще доступна для самого класса.Таким образом, блок статической инициализации создает URIMatcher только один раз (при загрузке класса), независимо от количества экземпляров.

...