这个的构造函数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;
}
}
Run Code Online (Sandbox Code Playgroud)
Dhr*_*ola 49
私有构造函数只允许在类定义中构造对象.作为一个枚举,它很容易混淆,所以我通常会发现将枚举视为具有一些特殊功能的类更容易.所以当你写:
SLocale.EN_US
Run Code Online (Sandbox Code Playgroud)
基本上是参数
Locale.US, "www.abc.com", "www.edc.com", "www.vvv.com", "www.earn.com"
Run Code Online (Sandbox Code Playgroud)
将被传递给私有构造函数,以便实例化枚举.Enum构造函数必须是私有的.
Bee*_*eez 46
来自:http://download.oracle.com/javase/tutorial/java/javaOO/enum.html
注意:枚举类型的构造函数必须是包私有或私有访问.它会自动创建在枚举主体开头定义的常量.您不能自己调用枚举构造函数.
你实际上不能有一个公共枚举构造函数.
您需要此构造函数是私有的,因为枚举定义了一组有限的值(例如EN_US,EN_UK,FR_FR,FR_BE).如果构造函数是公共的,则可能会创建更多值(例如,无效/未声明的值,例如XX_KK等).这将扩展最初声明的值的集合.