首先,给出一个例题如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
enum AccountType
{
SAVING, FIXED, CURRENT;
private AccountType()
{
System.out.println(“It is a account type”);
}
}
class EnumOne
{
public static void main(String[]args)
{
System.out.println(AccountType.FIXED);
}
}
|
Terminal输出:
1
2
3
4
|
It is a account type
It is a account type
It is a account type
FIXED
|
分析:
创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 Java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式Class Enum<E extends Enum <E>>,而E表示枚举类型的名称的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中
简单来说就是枚举类型中的枚举值都会对应调用一次构造函数,本题中三个枚举值,这里还要特别强调一下,枚举中的构造函数是私有类,也就是无法再外面创建enum
枚举值默认static(静态类常量) ,会为每个类常量增加一个构造函数。AccountType.FIXED使用的是枚举值,没有创建。所以一共就3次。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class Test {
public static void main(String[] args) {
weekday mon = weekday.mon;
weekday tue = weekday.tue;
weekday thus = weekday.thus;
weekday fri = weekday.fri;
}
public enum weekday {
mon(), tue( 2 ), wes( 3 ), thus(), fri;
private weekday() {
System.out.println( "no args" );
}
private weekday( int i) {
System.out.println( "have args " + i);
};
}
}
|
Terminal输出:
1
2
3
4
5
|
no args
have args 2
have args 3
no args
no args
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/xidiancoder/article/details/55511015