【发布时间】:2011-09-01 21:29:38
【问题描述】:
我和一位同事讨论了 Java 如何表示枚举。我的印象是它们严格来说是像 C/C++ 这样的整数。或者,如果您添加行为(类型安全枚举),它会被包装在一个类中。他相信如果它足够小,Java 会压缩到一个字节。
但是,我在 Oracle 网站上找到了这个:
Java 编程语言的枚举比其他语言中的枚举要强大得多,后者只不过是美化的整数。新的枚举声明定义了一个成熟的类(称为枚举类型)。
我认为它们是真实的对象。如果是这样,有没有办法优化它们以节省空间?
谢谢
编辑:正如对 Jon 的回答的评论中提到的,我追求的是 Enum 的序列化大小。
【问题讨论】:
-
如果您需要“优化 Java 枚举以节省空间”,那么您做错了。具体来说,如果您的 Enums 占用了太多空间,那么您的 Enums 似乎可能太多了。
-
并不是我们的枚举太多。这是我们打算传递带有枚举的对象。因此,结构越小,发送的效率就越高。或者这就是想法......
-
如果您使用 Enums 来定义类型(例如,这是一个 Blammy 报告,因此它的 type = enum.Blammy)您可能会考虑使用多态性(例如,BlammyReport 类扩展 ...) .
-
是的,但是当对象不再彼此不同时会发生什么?那么BlammyReport和TPSReport是一样的,只是类型不同,需要区别对待?
-
多态性的胜利!相同的功能可以在父类中实现,但使用类类型方便处理差异。
标签: java optimization enums compilation java-6