【问题标题】:what does static area in java mean? [duplicate]java中的静态区域是什么意思? [复制]
【发布时间】:2013-07-29 21:45:36
【问题描述】:

我遇到过如下代码:

public final class MainActivity extends ActivityBase

{

    static

    {
        Logger.create();      
    }
...

}

static 这样的区域是什么意思?

使用这种语法有什么好处?

【问题讨论】:

标签: java android


【解决方案1】:

官方文档

静态初始化块是包含在 大括号、{ } 和前面的 static 关键字。这是一个例子:

 static {
     // whatever code is needed for initialization goes here }

一个类可以有任意数量的静态初始化块,它们可以 出现在类主体的任何位置。运行时系统保证 静态初始化块按照它们出现的顺序被调用 在源代码中。

还有一个静态块的替代方案——你可以写一个私有的

静态方法:

 class Whatever {
     public static varType myVar = initializeClassVariable();

     private static varType initializeClassVariable() {

         // initialization code goes here
     } 
 } 

私有静态方法的优点是,如果您需要重新初始化类变量,它们可以在以后重用。

【讨论】:

    【解决方案2】:

    每当加载(导入)类时,static 块就会执行。它通常用于初始化静态变量等。

    【讨论】:

    • 那么为什么不在静态 ctor 中呢?
    • @EladBenda 什么是静态 ctor?
    【解决方案3】:

    这是一个static initializer。它允许人们通过使用一组语句而不仅仅是一个表达式来初始化static 变量(甚至是static final)。

    在这种情况下,只要第一次引用该类,它就会执行一项活动,即使没有创建该类的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 2017-08-13
      • 1970-01-01
      • 2023-03-29
      • 2011-01-18
      • 1970-01-01
      • 2013-10-04
      相关资源
      最近更新 更多