我看了this issue,我很困惑。他使用静态块。他为什么要写一行?
这两者有什么区别?
private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN);
和
private static Pattern email_pattern;
static {
email_pattern = Pattern.compile(EMAIL_PATTERN);
}
答案 0 :(得分:6)
您的示例的行为没有区别。静态块可用于执行更多逻辑,而不仅仅是分配var。无需在示例中使用该块。
答案 1 :(得分:2)
两个代码片段都做同样的事情,但大多数人会发现紧凑版本更容易阅读。
在单行分配版本中有些事情是您无法做到的,例如处理异常。在这些情况下,您必须使用初始化程序块。
第三种方法是将初始化代码移动到(静态)方法中。
private static final Pattern pattern = doSomethingReallyComplexHere();