我有以下要理解的代码:
public class A {
enum Size {S, M, L };
Size size = Size.M;
}
我知道第一行枚举创建了一个具有三个值的枚举,但是第二行在做什么?可变大小将保持什么,这是构造枚举的另一种方式吗?
我有以下要理解的代码:
public class A {
enum Size {S, M, L };
Size size = Size.M;
}
我知道第一行枚举创建了一个具有三个值的枚举,但是第二行在做什么?可变大小将保持什么,这是构造枚举的另一种方式吗?
第二行只是给类 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;
}
}
第二个喜欢是Size
在你的类中声明一个类型的包私有成员变量A
并将其初始化为指向Size.M
.
枚举是一种类型(就像类是一种类型一样)。第二行是创建一个名为 size 的实例变量,它的类型为 Size(因为枚举是一种类型)。然后它将该实例变量的值初始化为枚举 Size 的实例(特别是 Size.M 实例)。