我建立了这种数据枚举:

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

最佳答案

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

首次使用该类时,将为每个文字调用enum的构造函数。因此,在您的情况下,多数民众赞成在第一次调用Enum.valueOf之前。

对构造函数的三个调用是由三个文字引起的,而不是您对valueOf的三个调用。

10-05 18:55