public interface Proposal {
public static final enum STATUS {
NEW ,
START ,
CONTINUE ,
SENTTOCLIENT
};
}
Java不允许枚举在接口内为final
,但默认情况下,接口内的每个数据成员都是public static final
。有人能澄清这一点吗?
发布于 2012-03-27 22:38:01
枚举不能是最终的,因为编译器将为程序员显式定义实现的每个枚举条目生成子类。
此外,没有实例具有自己的类体的枚举由JLS section 8.9隐式地定义为最终的。
发布于 2012-03-27 22:30:36
Java不允许创建扩展enum
类型的类。因此,枚举本身总是最终的,所以使用final
关键字是多余的。
当然,在某种意义上,枚举并不是最终的,因为您可以为enum
描述符内的每个字段定义一个匿名子类。但是使用final
关键字来防止这种类型的描述没有多大意义,因为人们必须在同一个.java文件中创建这些子类,并且任何有权这样做的人都可以很容易地删除final
关键字。没有人在其他包中扩展您的枚举的风险。
发布于 2012-03-27 22:33:27
声明枚举final是没有意义的。对于类来说,Final意味着它们不能被继承。但是,默认情况下不能继承枚举(即它们是最终的)。
最后一件事只对变量有效。但是,您应该认为枚举更像是数据类型,而不是变量。
https://stackoverflow.com/questions/9891613
复制相似问题