0 0

java enum类中为什么构造器必须是私有的。5

1、java enum类中为什么构造器必须是私有的。

2、java enum类中属性必须是私有的吗?

3、java类必须有构造器吗?
 
2012年4月19日 14:25

2个答案 按时间排序 按投票排序

0 0

亲,先看看Enum的本质吧~

Compiled from "LogActionCode.java"
public final class LogActionCode extends java.lang.Enum{
    public static final LogActionCode ADMIN_LOGIN;
    public static final LogActionCode ADMIN_CREATE_USER;
    public static final LogActionCode ADMIN_EDIT_USER;
    public static final LogActionCode ADMIN_DELETE_USER;
    public static final LogActionCode ADMIN_CREATE_RATE;
    public static final LogActionCode ADMIN_EDIT_RATE;
    public static final LogActionCode ADMIN_DELETE_RATE;
    public static final LogActionCode ADMIN_CREATE_INTEGRAL;
    public static final LogActionCode ADMIN_EDIT_INTEGRAL;
    public static final LogActionCode ADMIN_DELETE_INTEGRAL;
    public static final LogActionCode ADMIN_CREATE_EXPENSE;
    public static final LogActionCode ADMIN_EDIT_EXPENSE;
    public static final LogActionCode ADMIN_DELETE_EXPENSE;
    public static final LogActionCode USER_LOGIN;

    static {};
    public static LogActionCode valueOf(long);
    public static java.lang.String getActionMsg(java.lang.Long);
    public java.lang.Long getCode();
    public java.lang.String getMsg();

    public static LogActionCode[] values();
    public static LogActionCode valueOf(java.lang.String);
}


我们一般在某个对象具有多种类型时,使用到Enum.其中的任意类型都是该对象的实例。所有类型对象实例将在static块中初始化,而无需外部实例化该对象(外部实例化无任何意义)。当然也就不需要public构造方法了。当然属性也是属于每一个类型实例的,你定义成public也可以,不过根据对象封装的思想,最好不公开对象属性。构造器你不写,在编译的时候会添加一个默认构造器到class中。

2012年4月20日 10:18
0 0

枚举的构造器只能使用private访问控制器,如果省略了其构造器的访问修饰符,则默认使用private修饰,如果强制指定访问控制符,则只能制定private,这是规定,没有什么好纠结的

2012年4月20日 08:31

相关推荐

Global site tag (gtag.js) - Google Analytics