接上篇:https://developer.aliyun.com/article/1228120?spm=a2c6h.13148508.setting.30.21084f0eNCKPti
二、 定义工具类
1. 常用定义方式
通常,我们会如下定义工具类:
2. 存在一些问题
1) 修饰符顺序不规范
通过SonarLint插件扫描,会出现以下问题:
Java语言规范建议使用“static final”,而不是“final static”。请记住这么一条规则:静态常量,静态(static)在前,常量(final)在后。
2) 工具类可以被继承覆盖
如果我们定义一个MyExampleHelper来继承ExampleHelper:
会发现,MyExampleHelper会对ExampleHelper中的常量和方法进行覆盖,导致我们不知道是不是使用了ExampleHelper中的常量和方法。
对于Apache提供的工具类,很多同学都喜欢定义相同名称的工具类,并让这个工具类继承Apache的工具类,并在这个类中添加自己的实现方法。其实,我是非常不推荐这种做法的,因为你不知道——你调用的是Apache工具类提供的常量和方法,还是被覆盖的常量和方法。最好的办法,就是对工具类添加final关键字,让这个工具类不能被继承和覆盖。
3) 工具类可以被实例化
对于ExampleHelper工具类,我们可以这样使用:
也可以被这样使用:
对于工具类来说,没有必要进行实例化。所以,我们建议添加私有构造方法,并在方法中抛出UnsupportedOperationException(不支持的操作异常)。
3. 最佳定义方式
根据以上存在问题及其解决方法,最佳定义的ExampleHelper工具类如下:
接下篇:https://developer.aliyun.com/article/1228116?groupCode=java