Java中Enum的执行顺序

哦哦

我有一个关于Enum的问题。

我有一个枚举类如下

public enum FontStyle {
    NORMAL("This font has normal style."),
    BOLD("This font has bold style."),
    ITALIC("This font has italic style."),
    UNDERLINE("This font has underline style.");

    private String description;

    FontStyle(String description) {
        this.description = description;
    }
    public String getDescription() {
        return this.description;
    }
}

我想知道何时创建此Enum对象。

枚举看起来像“静态最终”对象,因为它的值永远不会改变。因此,为此目的,仅在编译时进行初始化是有效的。

但是它在顶部调用了自己的构造函数,因此我怀疑它是否会在我们调用它时生成,例如在switch语句中。

普什莫

是的,枚举是静态常量,但不是编译时间常量。就像其他任何类一样,在第一次需要枚举时会被加载。如果稍微更改其构造函数,就可以轻松观察它

FontStyle(String description) {
    System.out.println("creating instace of "+this);// add this
    this.description = description;
}

并使用简单的测试代码,例如

class Main {
    public static void main(String[] Args) throws Exception {
        System.out.println("before enum");
        FontStyle style1 = FontStyle.BOLD;
        FontStyle style2 = FontStyle.ITALIC;
    }
}

如果您将运行main方法,您将看到输出

before enum
creating instace of NORMAL
creating instace of BOLD
creating instace of ITALIC
creating instace of UNDERLINE

这表明当我们想第一次使用enum时,已经加载了enum类(并且其静态字段已初始化)。

您也可以使用

Class.forName("full.packag.name.of.FontStyle");

如果尚未加载,则会导致其加载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

关于Java中的i ++执行顺序

来自分类Dev

Java语句的执行顺序

来自分类Dev

Java语句的执行顺序

来自分类Dev

Makefile中的执行顺序

来自分类Dev

人偶中的执行顺序

来自分类Dev

人偶中的执行顺序

来自分类Dev

Chef中的执行顺序

来自分类Dev

Makefile 中的执行顺序

来自分类Dev

是否确保Java中的操作执行顺序始终相同?

来自分类Dev

Java构造函数-继承层次结构中的执行顺序

来自分类Dev

绑定到Java事件中的函数的执行顺序

来自分类Dev

例如,对notifyAll的调用顺序如何影响Java中的执行?

来自分类Dev

Java派生类中构造函数的执行顺序

来自分类Dev

用Java执行的代码顺序

来自分类Dev

Java-顺序异步执行

来自分类Dev

在angularjs中控制执行顺序

来自分类Dev

Celery中的顺序任务执行

来自分类Dev

在Spring中执行注释的顺序

来自分类Dev

JavaScript中的意外执行顺序

来自分类Dev

遍历Flags Enum中的值-但保持顺序

来自分类Dev

遍历Flags Enum中的值-但保持顺序

来自分类Dev

Java中的添加顺序

来自分类Dev

java中的日历顺序

来自分类Dev

在Java中,如何以一定的顺序执行代码行并在它们之间有延迟?

来自分类Dev

在Java中,如何以一定的顺序执行代码行并在它们之间有延迟?

来自分类Dev

JVM是否顺序执行Java字节码?

来自分类Dev

Java与NetBeans 7.2.1-执行顺序问题

来自分类Dev

PowerShell脚本块中的命令执行顺序

来自分类Dev

dplyr管道中嵌套函数的执行顺序