Hutool不糊涂(一)

本文介绍了Java工具库Hutool,包括它的类型转换、日期时间处理、字段验证、配置工具和日志工具等功能。Hutool遵循Apache2.0协议,提供丰富的API,帮助开发者提高开发效率。文章通过示例代码展示了如何使用Hutool进行类型转换,如String转Date,自定义转换器等,并讲解了日期时间的格式化、计算和转换。此外,还提到了字段验证器和配置文件处理,以及日志工具的便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

●Hutool是什么?

●最甜的几块糖(Part 1)

●类型转换 

●日期与时间

●字段验证器

●配置工具

●日志工具


●Hutool是什么?

接下来的两篇文章,笔者将给大家安利一个能够明显提升Java开发效率的开源项目Hutool。官方对其描述为:A set of tools to keep java sweet。它其实是一套Java工具包,提供了许多与业务无关的常用方法,避免重复开发。截止笔者撰文,它在Github上已经收获了2033个Star,要知道,大名鼎鼎的Tomcat也不过2628,可见,它是受广大程序员推崇的。

笔者之所以要推荐这个开源项目给大家,最主要是因为其三大优势——

优势1:遵循Apache2.0开源许可协议,商业友好,可以无风险地接入使用;

优势2:提供的工具众多且实用,拥有完善的API手册,方便查找;

优势3:按需配置依赖,伸缩轻量灵活;

 

Hutool项目Github传送门:https://github.com/looly/hutool/

官方最新的API说明文档位于:https://apidoc.gitee.com/loolly/hutool/

使用示例位于:http://hutool.mydoc.io/#category_76195

 

●最甜的几块糖(Part 1)

以下章节将会重点介绍笔者觉得Hutool中最高效实用的几个类,涉及大量的举例代码,读者可以选择性的阅读,也可以作为手册,后期随时翻阅查看。需声明,以下代码均为笔者自行编写,非项目直接来源,大家无序对号入座,还请结合自己的实际业务去使用。

●类型转换 

该类几乎是一个万能的类型转换工具类,提供了大量平时常用的类型转换函数,相比传统写法,会更简洁。举例几个经典例子:

1、String转换为Date。不需要进行异常捕获,转换失败返回null,而不抛出异常;同时也提供单参数与双参数的重载函数,后者在转换失败时返回给定值,该特性Convert中其他大多数函数也具备,下同,不再赘述

//传统写法
String string = "2018-11-11 00:00:01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    Date date = sdf.parse(string);
} catch (ParseException e) {
    e.printStackTrace();
    Date date = new Date();
}

//“糊涂”写法
String string = "2018-11-11 00:00:01";
Date date = Convert.toDate(string, new Date());

2、时间单位的转换,例如毫秒转化为天,避免了人为计算,也增加了代码的可读性,其中,该函数的第二第三个参数来自于java.util.concurrent下的枚举变量TimeUnit

long milliseconds = 145248462254L;
//传统写法
long day1 = milliseconds/1000/60/60/24;

//“糊涂”写法
long day2 = Convert.convertTime(milliseconds,TimeUnit.MILLISECONDS,TimeUnit.DAYS);

3、自定义转换器。如果Hutool提供的转换函数还不够用,想定义自己类的转换器,也是可以的。我们以代码为例,使用自定义转换器有两个步骤:一是继承Converter<T>接口,实现接口方法(插一句嘴,这是一个函数式接口,完全可以用Lambda的形式去实现,留给感兴趣的读者去尝试。本例将以传统方式书写);二是在转换器仓库ConverterRegistry中注册自定义的转换器,之后就可以使用了。

有如下两个类:报警树节点类与通用树节点类,二者不是继承关系,前者特有报警状态,但没有后者是否显示的标志位。

public class AlarmTreeNode {
    private AlarmTreeNode childTreeNode;
    private boolean isRoot;
    private String alarmName;
    private int deviceIndex;
    private byte alarmStatus;

    public  AlarmTreeNode(){
        this.childTreeNode = null;
        this.isRoot = false;
        this.alarmName = "";
        this.deviceIndex = 0;
        this.alarmStatus = 1;
    }
    public AlarmTreeNode(AlarmTreeNode childTreeNode, boolean isRoot, String alarmName, int deviceIndex, byte alarmStatus) {
        this.childTreeNode = childTreeNode;
        this.isRoot = isRoot;
        this.alarmName = alarmName;
        this.deviceIndex = deviceIndex;
        this.alarmStatus = alarmStatus;
    }

    public AlarmTreeNode getChildTreeNode() {
        return childTreeNode;
    }

    public void setChildTreeNode(AlarmTreeNode childTreeNode) {
        this.childTreeNode = childTreeNode;
    }

    public boolean isRoot() {
        return isRoot;
    }

    public void setRoot(boolean root) {
        isRoot = root;
    }

    public String getAlarmName() {
       
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值