静态块和静态字段有什么区别?
What is difference between static block and static field?
我看了this issue,我很困惑。他使用静态块。他为什么要写一行?
这两者有什么区别?
private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN);
和
private static Pattern email_pattern;
static {
email_pattern = Pattern.compile(EMAIL_PATTERN);
}
您的示例的行为没有区别。静态块可以用来做更多的逻辑,而不仅仅是分配一个变量。无需在您的示例中使用该块。
两个代码片段做同样的事情,但大多数人会发现精简版更易于阅读。
有些事情在单行赋值版本中是做不到的,比如处理异常。在这些情况下,您必须使用初始化程序块。
第三种方法是将初始化程序代码移动到(静态)方法中。
private static final Pattern pattern = doSomethingReallyComplexHere();
我看了this issue,我很困惑。他使用静态块。他为什么要写一行?
这两者有什么区别?
private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN);
和
private static Pattern email_pattern;
static {
email_pattern = Pattern.compile(EMAIL_PATTERN);
}
您的示例的行为没有区别。静态块可以用来做更多的逻辑,而不仅仅是分配一个变量。无需在您的示例中使用该块。
两个代码片段做同样的事情,但大多数人会发现精简版更易于阅读。
有些事情在单行赋值版本中是做不到的,比如处理异常。在这些情况下,您必须使用初始化程序块。
第三种方法是将初始化程序代码移动到(静态)方法中。
private static final Pattern pattern = doSomethingReallyComplexHere();