《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(2)

简介: 《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之样板代码(2)

接上篇:https://developer.aliyun.com/article/1228120?spm=a2c6h.13148508.setting.30.21084f0eNCKPti


二、 定义工具类

 

1. 常用定义方式

 

通常,我们会如下定义工具类:

 

image.png 

 

2. 存在一些问题

 

1) 修饰符顺序不规范

 

通过SonarLint插件扫描,会出现以下问题:

 

image.png 

 

Java语言规范建议使用“static final”,而不是“final static”。请记住这么一条规则:静态常量,静态(static)在前,常量(final)在后。

 

2) 工具类可以被继承覆盖

 

如果我们定义一个MyExampleHelper来继承ExampleHelper:

 

image.png 

 

会发现,MyExampleHelper会对ExampleHelper中的常量和方法进行覆盖,导致我们不知道是不是使用了ExampleHelper中的常量和方法。

 

对于Apache提供的工具类,很多同学都喜欢定义相同名称的工具类,并让这个工具类继承Apache的工具类,并在这个类中添加自己的实现方法。其实,我是非常不推荐这种做法的,因为你不知道——你调用的是Apache工具类提供的常量和方法,还是被覆盖的常量和方法。最好的办法,就是对工具类添加final关键字,让这个工具类不能被继承和覆盖。

 

3) 工具类可以被实例化

 

对于ExampleHelper工具类,我们可以这样使用:

 

image.png 

 

也可以被这样使用:

 

image.png 

 

对于工具类来说,没有必要进行实例化。所以,我们建议添加私有构造方法,并在方法中抛出UnsupportedOperationException(不支持的操作异常)。

 

3. 最佳定义方式

 

根据以上存在问题及其解决方法,最佳定义的ExampleHelper工具类如下:

 

image.png


 接下篇:https://developer.aliyun.com/article/1228116?groupCode=java

相关文章
|
10月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
625 6
|
10月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
411 115
|
10月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
310 98
|
10月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
719 43
|
10月前
|
安全 Java 容器
告别空指针噩梦:Optional让Java代码更优雅
告别空指针噩梦:Optional让Java代码更优雅
551 94
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
575 1
|
Java BI API
在Java代码中打日志需要注意什么?
日志是什么?日志是你在代码运行时打印出来的一些数据和记录,是快速排查问题的好帮手,是撕逼和甩锅的利器!
980 0
|
缓存 Java 网络架构
别在 Java 代码里乱打日志了,这才是正确的打日志姿势!
别在 Java 代码里乱打日志了,这才是正确的打日志姿势!
307 0
|
缓存 架构师 搜索推荐
别在 Java 代码里乱打日志了,这才是正确的日志打印姿势!
使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
|
Java BI Apache
在Java代码中打日志需要注意什么?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 为什么要打日志? 日志是什么?日志是你在代码运行时打印出来的一些数据和记录,是快速排查问题的好帮手! 做一件事情之前,先思考为什么。
在Java代码中打日志需要注意什么?