2016-04-12 65 views
1
public enum itemType{ 
    COMPANYY_WIDE("Company"), 
    DEPARTMENTAL("Departmental"), 
    PROJECT_SPECIFIC("Project"); 

    private String itemCode; 

    private itemType(String dbCode){ 
     this.itemCode=dbCode; 
    } 

    public static void main(String[] args) { 
     itemType type3=new itemType("Project");// line 1 
     itemType type2=itemType.valueOf("PROJECT_SPECFIFIC");// line 2 
     itemType type4=itemType.values()[0];// line 3 
     itemType type1=itemType.DEPARTMENTAL; 
    } 
} 

所以枚举itemType有4种类型,每种类型都有一个属性itemcode也是dbcode。我试着用不同的方法初始化枚举类型,但我有一些困惑。为什么第1行不起作用?为什么第2行和第3行将起作用?在Java中枚举类型初始化混淆

+0

看看这个:http://stackoverflow.com/questions/19971982/enum-class-initialization-in-java – Erick

回答

0

在Java中,enum是一个特殊类型的类,它具有固定数量的对象。

对于您的情况,itemType恰好有三个对象,分别为COMPANYY_WIDEDEPARTMENTAL,PROJECT_SPECIFIC。您不能在运行时为enum创建任何新对象。

你可以阅读这个Java督Java Enum

+0

尼斯解释!由于我们无法创建新对象,因此在枚举中使用构造函数的含义是什么? @rev_dihazum – user6119494

+0

@ user6119494构造函数仅用于一次加载项目。 – flakes

+0

用于设置''enum''属性的构造函数。例如,如果你有你的枚举类型的另一个属性,即“private int itemId;”,那么你需要修改你的构造函数为“itemType(String dbCode,int id){this.itemCode = dbCode; this.itemId = id; }''并声明对象为''COMPANYY_WIDE(“Company”,1)'' –