繁体   English   中英

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

[英]Why the java method Enum.valueof invoke the enum type constructor?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM