Java中的静态变量启动器

use*_*800 1 java static

我不明白A和B之间的区别.

一个

private static final CookieStore sCookieStore;
static {
    sCookieStore = new CookieStore();
}
Run Code Online (Sandbox Code Playgroud)

private static final CookieStore sCookieStore = new CookieStore();
Run Code Online (Sandbox Code Playgroud)

有人可以澄清我的理解吗?

Jam*_*mes 7

在你的例子中,它们实际上是等价的.B较短,并且对于简单的创作是优选的,但是A允许更复杂的初始化.

例如

private static final CookieStore sCookieStore;

static {
  sCookieStore = new CookieStore();
  sCookieStore.setSize(1000);
  sCookieStore.addToBlacklist("bing.com");
  sCookieStore.readCookiesFromFile("/tmp/cookies.txt");
}
Run Code Online (Sandbox Code Playgroud)

  • @ user978548 - 有一些实例初始化程序块可以满足您的需求.请参阅此页面:http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html (2认同)