0

我有以下要理解的代码:

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

我知道第一行枚举创建了一个具有三个值的枚举,但是第二行在做什么?可变大小将保持什么,这是构造枚举的另一种方式吗?

4

3 回答 3

6

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

枚举是在 class 内部创建的,您可能会对此感到有些不安A,它可能在另一个文件中(但如果仅在其中使用,将它放在 class 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;
    }
}
于 2012-06-15T16:35:14.360 回答
0

第二个喜欢是Size在你的类中声明一个类型的包私有成员变量A并将其初始化为指向Size.M.

于 2012-06-15T16:36:19.687 回答
0

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

于 2012-06-15T16:37:41.863 回答