java 生成枚举_为什么编译器在Java中生成Enums?

 2023-09-16 阅读 26 评论 0

摘要:我真的明白它无法扩展任何类来实现枚举,因为这意味着有多重继承.但我不明白的是,为什么编译器在使用“enum”而不是“class”时创建的枚举类是最终的.是否有任何理由不能延长枚举?Java 编译器。另外:有没有办法在没有Copy& Paste的情况下为不同的枚举实现常

我真的明白它无法扩展任何类来实现枚举,因为这意味着有多重继承.但我不明白的是,为什么编译器在使用“enum”而不是“class”时创建的枚举类是最终的.

是否有任何理由不能延长枚举?

Java 编译器。另外:有没有办法在没有Copy& Paste的情况下为不同的枚举实现常见行为?

解决方法:

枚举的一个非常重要的方面是数字或值在编译时是已知的(至少在枚举的编译时).

Maxine graal 编译器?所以如果你有这样的枚举:

public enum Foo {

BAR,

java enum?BAZ;

}

然后你知道它有两个值:BAR和BAZ.

java枚举使用?如果你可以扩展枚举,那么你可以引入一个添加QUUX的ExtendedFoo枚举.现在,由于ExtendedFoo将是Foo,QUUX将突然成为有效的Foo值.没有什么能阻止你添加任何额外的Foo值.

这意味着编译器无法再检查您的开关是否涵盖所有Foo案例.类似的静态分析步骤也不再可能.实际上,你的枚举将不再是一种特殊的类型,并且对于具有一些预定义实例的普通类,差别很小.

旁注:生成的枚举类是not always final:如果(至少)你的一个枚举值有一个特定于值的主体,那么“基础”类将不是最终的,但编译器仍然会阻止你扩展它.

java编译工具,标签:java,enums

来源: https://codeday.me/bug/20190729/1576048.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/67618.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息