java枚举类的构造函数

首先,给出一个例题如下:

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输出:
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表示枚举类型的名称的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中

简单来说就是枚举类型中的枚举值都会对应调用一次构造函数,本题中三个枚举值,这里还要特别强调一下,枚举中的构造函数是私有类,也就是无法再外面创建enum

枚举值默认static(静态类常量) ,会为每个类常量增加一个构造函数。AccountType.FIXED使用的是枚举值,没有创建。所以一共就3次。

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输出:
no args
have args 2
have args 3
no args
no args

你可能感兴趣的:(Java,java,枚举类,Enum)