"2021年EFFECTIVEJAVA读书笔记:枚举与注解用法总结"

1 下载量 184 浏览量 更新于2023-12-24 收藏 8.42MB DOCX 举报
《Effective Java》是一本关于Java编程语言最佳实践的经典著作,其中的第六章主要讨论了注解与枚举的使用。在这一章节中,作者首先强调了枚举常量的重要性,指出枚举常量具有固定常量构成合法值类型的特性,相比于使用int常量,枚举常量能够在便利性和类型安全方面提供更好的支持。 首先,作者指出使用int枚举类型存在一些问题。首先,int枚举类型的使用不具备类型安全性,因为传入错误的int常量时并不会有任何警告。其次,int枚举类型非常脆弱,一旦与枚举常量有关的int类型发生变化,客户端就必须重新编译,这带来了额外的麻烦和工作量。此外,int枚举类型无法直接打印或者遍历,也不能轻易地与字符串常量关联起来。 在这之后,作者介绍了最简朴枚举模式的使用方法。通过共有静态final域为每个枚举常量导出实例类,可以提供编译时类型安全和自动命名空间隔离,而且可以增长枚举类型常量而无需重新编译客户端代码。此外,最简朴枚举模式还可以调用toString方法将枚举常量转换成可打印字符串,并且可以添加任意方法和域,例如使用枚举常量直接获取有关数据。 在具体的使用方法方面,作者指出在将数据与枚举常量关联起来时,需要声明实例域并编写一个带有数据并将数据保存在域中的构造器。由于枚举类型天生不可变,所以所有域都必须是final,最佳设置为私有并提供公有访问方法。最后,作者通过实例代码演示了Planet.values()方法的使用,这个方法返回它值数组,并展示了如何添加新的枚举常量以及如何定义相关的数据和方法。 总的来说,枚举类型具有许多优点,包括编译时类型安全、自动命名空间隔离、可以增加常量而无需重新编译客户端代码、可以调用toString方法将枚举常量转换成可打印字符串、可以添加任意方法和域等。相比之下,int枚举类型和String枚举模式存在许多问题,包括不具备类型安全、脆弱、无法打印或遍历、性能问题和可变性差等。因此,在Java编程中,应该优先考虑使用枚举常量而不是int常量或String枚举模式,以获得更好的编程体验和更加健壮的代码。