为什么编译器在Java中生成Enums?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么编译器在Java中生成Enums?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含855字,纯文字阅读大概需要2分钟。
内容图文
![为什么编译器在Java中生成Enums?](/upload/InfoBanner/zyjiaocheng/743/fa98e48d16894be2ae9d3fe7a07145af.jpg)
我真的明白它无法扩展任何类来实现枚举,因为这意味着有多重继承.但我不明白的是,为什么编译器在使用“enum”而不是“class”时创建的枚举类是最终的.
是否有任何理由不能延长枚举?
另外:有没有办法在没有Copy& Paste的情况下为不同的枚举实现常见行为?
解决方法:
枚举的一个非常重要的方面是数字或值在编译时是已知的(至少在枚举的编译时).
所以如果你有这样的枚举:
public enum Foo {
BAR,
BAZ;
}
然后你知道它有两个值:BAR和BAZ.
如果你可以扩展枚举,那么你可以引入一个添加QUUX的ExtendedFoo枚举.现在,由于ExtendedFoo将是Foo,QUUX将突然成为有效的Foo值.没有什么能阻止你添加任何额外的Foo值.
这意味着编译器无法再检查您的开关是否涵盖所有Foo案例.类似的静态分析步骤也不再可能.实际上,你的枚举将不再是一种特殊的类型,并且对于具有一些预定义实例的普通类,差别很小.
旁注:生成的枚举类是not always final:如果(至少)你的一个枚举值有一个特定于值的主体,那么“基础”类将不是最终的,但编译器仍然会阻止你扩展它.
内容总结
以上是互联网集市为您收集整理的为什么编译器在Java中生成Enums?全部内容,希望文章能够帮你解决为什么编译器在Java中生成Enums?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。