私有枚举构造函数

2022-08-31 15:08:54

此构造函数是私有的。那是什么意思?enum

public enum SLocale {

    EN_US(Locale.US, "www.abc.com", "www.edc.com", "www.vvv.com",
            "www.earn.com");

    List<String> domains;
    Locale loc;
    IMap map;

    private SLocale(Locale loc, String... domains) {
        this.domains = Arrays.asList(domains);
        this.loc = loc;
        this.siteMap = Factory.getMap(loc);
    }

    public List<String> getDomains() {
        return domains;
    }

    public Locale getLoc() {
        return loc;
    }

    public ISiteMap getMap() {
        return map;
    }
}

答案 1

私有构造函数仅允许从类定义中构造对象。作为枚举,很容易混淆,所以我通常发现更容易将枚举视为具有一些特殊功能的类。所以当你写:

SLocale.EN_US

基本上,参数

Locale.US, "www.abc.com", "www.edc.com", "www.vvv.com", "www.earn.com"

将传递给私有构造函数,以便可以实例化枚举。枚举构造函数必须是私有的。


答案 2

寄件人: http://download.oracle.com/javase/tutorial/java/javaOO/enum.html

注: 枚举类型的构造函数必须是包专用或专用访问。它会自动创建在枚举正文开头定义的常量。您不能自己调用枚举构造函数。

您实际上不能有公共枚举构造函数。