java类没有任何方法,但在static关键字下包含逻辑

标签 java

我对以下代码片段有几个疑问:

public class Configuration
{
    public static String TEMP_DIR;
    public static List<String> LEvents;
    ......//some more public static members......

   static{
      //logic to fill all the members of this class
    }
}
  1. 我想知道填充成员的逻辑什么时候执行?
  2. 如果我使用实际的静态方法来执行逻辑并调用一次,这种方法是否有所不同?

最佳答案

static {
    //logic to fill all the members of this class
} 

代码被称为 static initializer .

I am wondering when will the logic which fills the members be executed?

Java 语言规范说

A static initializer declared in a class is executed when the class is initialized (§12.4.2).

然后你问

And is this approach different if i would have used actual static method to execute the logic and call it once?

使用静态初始化程序,JVM 负责执行代码。使用静态方法,您必须自己调用它。为了使其等效,您可能还想保证该方法仅被调用/执行一次。

关于java类没有任何方法,但在static关键字下包含逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874123/

相关文章:

java - RestTemplate/HttpClient 更改 Spring Boot 1.5 -> 2.1

java - 为第一轮 Switch Java 制作 If 语句

java - 如何使用本身加密的私钥/密码来加密数据?

java - Android程序写入模拟器而不是手机

java - Android:向左滑动以将另一个元素添加到列表中

java - 存储和管理(正确反序列化对象以及反序列化后如何使用它们

java - 与 arquillian 的 EAR 集成测试

java - 需要java国际象棋程序的帮助

java - android webview youtube 嵌入视频自动播放不工作

java - 单击按钮时,我在数据库中添加了一个对象(通过 struts 2)。但不是同时反射(reflect)