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

为什么java方法Enum.valueof调用枚举类型构造函数?,java,enums,Java,Enums,我构建了这种数据枚举: 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; } } 然后,在主要方法中,我只是这样做: public stat

我构建了这种数据枚举:

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;
    }
 }
然后,在主要方法中,我只是这样做:

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”(枚举类型的名称)。但是:
为什么构造函数只运行一次?请注意,我有两个实例和一个对该类的直接调用

调用构造函数的不是方法
valueOf

首次使用类时,将为每个文本调用
enum
的构造函数。因此,在您的情况下,这是在第一次调用
Enum.valueOf
之前


对构造函数的三次调用是由三个文本引起的,而不是对
valueOf

的三次调用语句
HOMBRE(“H”)、MUJER(“M”)、OTRO(“O”)
调用构造函数。不是你的
值的方法。谢谢你的回答@如果答案有助于你解决问题,考虑接受它,谢谢。对不起…我用“接受”选项接受了答案,谢谢