java - 何时在 Java 类中实例化静态 block

标签 java static static-block

假设类中有一个静态 block

public class Menu {

    private static Map<String, String> buttonEventMap = new HashMap<String, String>();

    static {
        buttonEventMap.put("show-user","show");
        buttonEventMap.put("delete-user","delete");
    }

    public static Map<String, String> getHashMap() // To get the hash map
}

block 的生命周期是多少,何时实例化,何时启动程序或何时创建该类的第一个对象

最佳答案

它在类加载器初始化类时执行。并且当应用程序中的某些代码第一次需要此类(例如调用静态方法,或引用其静态字段之一,或创建新实例)时,该类会被延迟初始化。

因此,如果程序从不使用该类,则静态 block 将永远不会被执行。

关于java - 何时在 Java 类中实例化静态 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796219/

相关文章:

java - AppEngine 数据存储管理 : cannot backup to cloudstore

java - 使用自定义适配器在 ListView 中获取 JSON 数据

java - 将 Canvas 添加到面板后不显示 Canvas ?

java - 线程是否创建静态变量的多个实例

java - 使用继承时,静态 block 和初始化 block 按什么顺序执行?

php - Magento 类别静态 block 仅不起作用

java - 用抽象来创建类也是封装吗?

spring - 重新加载静态内容 Spring Boot 应用程序

1.9.2.2 中的 Magento 静态 block 问题