Java基础、中级、高级、架构面试资料

如何编写一个 Java 工具类?

JAVA herman 8087浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

在知乎上,以如何 XXX 开头的话题有很多。今天我也以如何编写一个 Java 工具类为话题,给大家规范一下工具类如何编写?

说实话,这个话题连《阿里巴巴Java开发手册》上都没有,这说明工具类确实简单,简单的不能再简单了,所以阿里巴巴Java开发手册都懒得写。但是并不能代表非阿里巴巴的员工都能高效的写出工具类。

最近我在做 code review 时,发现了一些开发人员在编写工具类时的小问题,所以在这里我简单的讲一下我的个人理解。不喜欢的可以敬请的喷!

结合上一篇文章《如何写出健壮的 Java 代码!》,本文来规范一下工具类的编写!

首先说明一下,这个工具类的规范不是我定义的,而是我参考众多知名开源框架发现的。

先说第一种情况,如果工具类中的方法全部时静态方法,那么可以将工具类作为一个 abstract 抽象类。Spring 框架中存在大量的这样的使用。

然后,如果工具类中有异常,请抛出,不要自己去 try-catch。更不要 try 了之后 e.printStackTrace() 。

还有就是工具类中要不要打印日志问题,尽量不要打印,像 log4j 这样的一些第三方日志框架也不要用。降低于第三方类库的依赖。

还有一情况是,工具类中的方法非 static 的。那你可以将工具类定义为 final class,考虑到工具类应该不能被继承。在私有化它的构造函数,提供一个单例。

工具类的命名应该用 Util 结尾,例如 LogUtil。

像下面这种工具类,就千万要注意了。

Java 工具类规范

至于工具类中的方法应该设计为静态的还是非静态的,这个没有统一的标准。各有各的好,参加大多数开源框架,static 的多一些。

工具类的设计,推荐大家多看看 GuavaApache Commons

像大名鼎鼎的 Hutool,它提到了工具类的 6 大设计思想。方法优先于对象、自动识别优于用户定义、便捷性与灵活性并存、适配与兼容、可选依赖原则、无侵入原则。

Hutool 中的工具类,既没有采用抽象类 abstract class 有没有采用 final class。所以我更喜欢 Spring、Guava、Apache Commons等框架的源码。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 如何编写一个 Java 工具类?