инициатор статической переменной в Java - PullRequest
1 голос
/ 02 апреля 2012

Я не понимаю разницы между A и B.

A

private static final CookieStore sCookieStore;
static {
    sCookieStore = new CookieStore();
}

B

private static final CookieStore sCookieStore = new CookieStore();

Есть ли кто-нибудь, кто может прояснить мое понимание?

Ответы [ 2 ]

7 голосов
/ 02 апреля 2012

Они фактически эквивалентны в вашем примере.B короче и предпочтительнее для простых созданий, но A допускает более сложную инициализацию.

Например

private static final CookieStore sCookieStore;

static {
  sCookieStore = new CookieStore();
  sCookieStore.setSize(1000);
  sCookieStore.addToBlacklist("bing.com");
  sCookieStore.readCookiesFromFile("/tmp/cookies.txt");
}
1 голос
/ 02 апреля 2012

В вашем примере они делают то же самое. Отдельный блок static полезен, если у вас более одного оператора, а также если вам нужно обрабатывать исключения, выданные этими операторами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...