猿问

为什么java方法Enum.valueof调用枚举类型构造函数?

我已经建立了这种数据枚举:


enum Sexo {

    HOMBRE("H"), MUJER("M"), OTRO("O"); 

    private String sexo;        

    private Sexo(String sexo){ 

        System.out.println("constructor del tipo enum");

        this.sexo=sexo;

    }

 }

然后,在 Main 方法中,我只是这样做:


public static void main(String[] args) {


    Sexo sexo1 = Enum.valueOf(Sexo.class, "HOMBRE"); 

    Sexo sexo2 = Enum.valueOf(Sexo.class, "MUJER"); 

    Sexo.valueOf("OTRO");


}

然后,我在控制台上有这个:


constructor del tipo enum

constructor del tipo enum

constructor del tipo enum

我知道我有一个对每个枚举类型的构造函数的调用,其中包含句子“Sexo”(枚举类型的名称)。但是:为什么构造函数只运行一次?请注意,我有两个实例和一个对类的直接调用。


慕运维8079593
浏览 184回答 1
1回答

慕侠2389804

它不是valueOf调用构造函数的方法。enum首次使用类时,会为每个文字调用an 的构造函数。所以在你的情况下,那是在第一次调用Enum.valueOf.对构造函数的三个调用是由三个文字而不是您对 的三个调用引起的valueOf。
随时随地看视频慕课网APP

相关分类

Java
我要回答