`
wdmcygah
  • 浏览: 60706 次
社区版块
存档分类
最新评论

六、编写高质量的代码—枚举和注解(笔记)

    博客分类:
  • J2SE
阅读更多

本博文为《编写高质量代码—改善Java程序的151个建议》一书的阅读笔记。该书从很多方面给予了编写高质量代码的宝贵经验。而且该书应该是那种开发经验越丰富,体会越深的书籍。在阅读过程中,从该书中收获良多,这里主要作下书籍笔记,有体会的地方加点自己的想法。受限于知识水平,部分内容还没能深刻体会,所以更多更好的内容和具体实例还需要从书中去找寻。

一、推荐使用枚举类定义常量

常量声明主要有三种方式:类常量、接口常量、枚举常量,而枚举常量与类常量、接口常量相比有如下优势:
1. 枚举常量定义更加简单直接。
2. 枚举常量属于稳态性,不要做过多校验。
3. 枚举常量具有内置方法,枚举类自带的很多方法可以简化常量的访问。
4. 枚举常量可以自定义方法,每个枚举项都该枚举的实例。 因此推荐使用枚举常量,个人觉得枚举常量在一组相关联的常量定义时非常适用。

二、使用构造函数协助描述枚举项

由于每个枚举项都是该枚举类的实例,所以在需要该枚举项需要额外描述时可以通过构造函数进行补充。

三、switch判断时小心空值异常

switch判断后面可以是枚举类型,因为判断时会调用枚举项的ordinal方法,拿到对应的序号进行判断,所以在switch判断时需要避免判断的枚举对象为空,不然会报空指针异常。

四、使用valueOf前必须进行校验

Enum.valueOf方法可以把String类型的参数转化成字面值相同的枚举项,不过需要注意当找不到相同的枚举项时转换会报出参数异常。所以在调用方法最好进行校验,判断该字面值是否存在,具体的做法可以在枚举类中实现“contains方法”。

五、@Override不同版本的区别 

@Override注解用于方法的覆写上,它在编译期有效,用于校验方法是否是覆写,如果不是就报错,拒绝编译。但是这个注解在不同JDK版本中略有区别,在JDK 1.5版本中如果父类是一个接口,实现类实现了接口的具体方法,此时加@Override是会编译不通过,因为认为这不是覆写,而是实现接口方法。不过在JDK 1.6及以上的版本,这种限制放宽了,实现接口方法也可以加上@Override注解。

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics