无法理解真实世界应用程序中的枚举

时间:2012-08-16 16:41:03

标签: java enums

我试图了解何时可以在Java中使用枚举。

所以,假设我有三个枚举值:

enum Activity {
    STUDENT, MECANICIAN, TEACHER
}

如何在现有的Person类中使用此枚举类?它是如何在数据库中保留的?

class Person {
    private String name;
    private String age;
    private String activity; // !!!
}

谢谢。

3 个答案:

答案 0 :(得分:6)

只需将枚举添加到Person

class Person {
    private String name;
    private String age;
    private Activity activity; 
}

持久保存此字段的一种方法是使用ORM,例如Hibernate,例如:

    @Enumerated(EnumType.STRING)
    private Activity activity; 

会将字段映射到数据库中的文本类型字段。

答案 1 :(得分:0)

它们有助于取代必须使用抽象整数。而不是工作= 1它的工作=学生。当然你可以使用数字,但你的代码很难理解。另外,您可以将活动用作必要类型。因此,每当你有一个函数changeJob(int val)时,你可以使它改变job(活动值)来强制你的一个谜团被传递。

答案 2 :(得分:0)

枚举是可迭代的,如果你想使用这样的值,这很好:

public static String getStatusStr(Status s) {
    return Messages.get("softDeleteable.status." + s.name());
}

public static List<DropDownData> getStatusDataSource() {
    List<DropDownData> retval = new ArrayList<DropDownData>();

    for(Status s : Status.values()) {
        retval.add(new DropDownData(s.name(), getStatusStr(s) ));
    }

    return retval;
}

其中DropDownData是一个简单的值,标签对象,而Messages是用于翻译(Play框架)