另一种创建java枚举的方法?

时间:2012-06-15 16:33:55

标签: java

我有以下代码,我想了解:

public class A {    
    enum Size {S, M, L };  
    Size size = Size.M; 
} 

我理解第一个枚举行是创建一个包含三个值的枚举,但第二行是做什么的?变量大小将保持什么,这是构建枚举的另一种方式?

3 个答案:

答案 0 :(得分:6)

第二行只是给A类实例的字段size(类型Size)初始值Size.M

你可能会因为enum是在类A中创建的事实而感到有点不安,它本来可以在另一个文件中(但如果仅使用它,将它放在A类中是完全可以的。有)。


编辑(不是答案的真正部分):这是枚举声明的一个(不太漂亮)例子,以便您可以更好地理解枚举声明的形式:

public enum QueryError {

    no_request("no_request", "No request in client call"),
    no_alias_requested("no_alias_requested", "no alias requested"),
    session_not_found("session_not_found", "wrong session id"),
    synosteelQuery_not_found("sxxx_not_found", "sxxx not found");

    public JsonpServerResponse.Error error;

    private QueryError(String type, String details) {
        this.error = new JsonpServerResponse.Error();
        this.error.type = type;
        this.error.detail = details;
    }
}

答案 1 :(得分:0)

第二种方法是在类Size中声明类型为A的包私有成员变量,并将其初始化为指向Size.M

答案 2 :(得分:0)

枚举是一种类型(就像类是一种类型)。第二行是创建一个名为size的实例变量,其大小类型(因为枚举是一种类型)。然后它将该实例变量的值初始化为枚举大小的实例(特别是Size.M实例)。