【问题标题】:What is difference between static block and static field? [duplicate]静态块和静态场有什么区别? [复制]
【发布时间】:2016-10-21 09:22:30
【问题描述】:

我看了this issue,我很困惑。他使用了一个静态块。他为什么要写一行?

这两者有什么区别?

private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN);

private static Pattern email_pattern;

static {
    email_pattern = Pattern.compile(EMAIL_PATTERN);
}

【问题讨论】:

  • 第一个不必要地有 2 个作业...

标签: java static static-members static-block


【解决方案1】:

您的示例的行为没有区别。静态块可用于执行更多逻辑,而不仅仅是分配 var。无需在您的示例中使用该块。

【讨论】:

    【解决方案2】:

    两个代码片段做同样的事情,但大多数人会发现精简版更易于阅读。

    有些事情在单行赋值版本中是不能做的,比如处理异常。在这些情况下,您必须使用初始化程序块。

    第三种方法是将初始化程序代码移动到(静态)方法中。

    private static final Pattern pattern = doSomethingReallyComplexHere();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2016-08-29
      • 2013-07-21
      • 2016-08-31
      • 2016-08-20
      • 2013-07-26
      相关资源
      最近更新 更多