当前位置: 首页 > news >正文

Apache Commons Lang 3

简单来说,Apache Commons Lang 是一个提供了大量Java标准库(java.lang 及其周边)增强功能的工具类库。它封装了许多常用但JDK本身没有提供的实用方法,旨在让Java开发更高效、代码更简洁、更健壮。


核心概述

  • 官方名称: Apache Commons Lang
  • 最新主流版本: Commons Lang 3 (这是一个与老版本 Lang 2 不兼容的重大升级,建议新项目直接使用 3)
  • 作用: 填补 JDK 在基础数据处理、方法调用、并发、文本操作等方面的不足,提供了大量“开箱即用”的静态工具方法。
  • 设计理念: 提供高质量、可重用、线程安全的工具类,所有方法都是静态的。

为什么开发者喜欢用它?

因为它解决了日常开发中非常多“琐碎的痛点”,你很可能写过它里面已经实现的方法。使用它可以:

  1. 避免“重复造轮子”: 你不用再自己写字符串是否为空的判断、对象toString、equals和hashCode方法等。
  2. 提高代码健壮性 (Null-Safe): 库中的许多方法都进行了安全的 null 值检查,避免了烦人的 NullPointerException
  3. 使代码更简洁、可读性更强: 一行清晰的工具方法调用可以替代多行的if-else判断和循环。
  4. 遵循最佳实践: 这些工具类由社区顶尖开发者维护和评审,实现了高效、可靠的算法。

它提供了哪些常用功能?(附代码示例)

以下是一些最常用和核心的类及其功能:

1. StringUtils - 字符串工具类 (使用频率最高)

处理 null 安全的字符串操作。

// 判断字符串是否为空或空白 (优于 if(str != null && !str.isEmpty()))
StringUtils.isEmpty(null);      // true
StringUtils.isEmpty("");        // true
StringUtils.isEmpty(" ");       // false
StringUtils.isBlank(" ");       // true (会trim空格)// 截取、查找、反转等操作都是null安全的
StringUtils.substring("Hello", 2);     // "llo"
StringUtils.substring(null, 2);        // null (不会抛NPE)StringUtils.reverse("ABC");            // "CBA"// 判断字符串是否包含某字符,忽略大小写
StringUtils.containsIgnoreCase("Apple", "APP"); // true// 用指定字符串连接数组元素
StringUtils.join(new String[]{"a", "b", "c"}, ","); // "a,b,c"
2. ObjectUtils - 对象工具类

安全地操作对象。

// 第一个非空对象
ObjectUtils.defaultIfNull(nullObject, "defaultValue");// 安全的toString,对象为null时返回指定字符串
ObjectUtils.toString(null);            // "null"
ObjectUtils.toString(null, "ERROR");   // "ERROR"// 比较两个对象 (null-safe)
ObjectUtils.equals(object1, object2);  // 等效于 java.util.Objects.equals()
3. ArrayUtils - 数组工具类

提供了标准JDK数组类所没有的功能。

// 判断数组是否为空
ArrayUtils.isEmpty(new String[]{});    // true
ArrayUtils.isEmpty(null);              // true// 向数组添加元素 (返回新数组)
String[] array = {"a", "b"};
array = ArrayUtils.add(array, "c"); // ["a", "b", "c"]// 反转数组
ArrayUtils.reverse(array); // 变为 ["c", "b", "a"]// 检查是否包含某个元素
ArrayUtils.contains(array, "b"); // true
4. RandomUtilsRandomStringUtils

生成随机数和随机字符串。

// 生成指定范围内的随机int/long
int randomInt = RandomUtils.nextInt(1, 100);// 生成随机字符串
String randomAlphabetic = RandomStringUtils.randomAlphabetic(10); // 10个字母
String randomNumeric = RandomStringUtils.randomNumeric(6);       // 6位数字
5. SystemUtils

获取系统属性,方便跨平台。

// 判断Java版本
SystemUtils.IS_JAVA_8;   // 是否是Java 8
SystemUtils.IS_JAVA_11;  // 是否是Java 11// 判断操作系统
SystemUtils.IS_OS_WINDOWS;
SystemUtils.IS_OS_LINUX;
6. 构建器:EqualsBuilder, HashCodeBuilder, ToStringBuilder

帮助快速、正确地重写 equals(), hashCode(), 和 toString() 方法,避免了手动编写容易出错的代码。

public class Person {private String name;private int age;@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return new EqualsBuilder().append(age, person.age).append(name, person.name).isEquals();}@Overridepublic int hashCode() {return new HashCodeBuilder(17, 37).append(name).append(age).toHashCode();}@Overridepublic String toString() {return new ToStringBuilder(this).append("name", name).append("age", age).toString();}
}

如何在项目中使用?

如果你的项目使用 Maven,在 pom.xml 中添加以下依赖即可:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.14.0</version> <!-- 请检查并使用最新版本 -->
</dependency>

如果使用 Gradle

implementation 'org.apache.commons:commons-lang3:3.14.0'

总结

Apache Commons Lang 是Java开发者工具箱中一件不可或缺的“瑞士军刀”。它极大地简化了基础代码的编写,提高了开发效率和代码质量。虽然现代JDK(如 Java 8+ 的 java.util.Objects)也吸收了一些类似思想,但 Commons Lang 在广度和深度上依然远超JDK,是绝大多数Java项目的标准基础依赖。

http://www.dtcms.com/a/353520.html

相关文章:

  • 设备电机状态监测:通往预测性维护与效能飞升之路
  • AutoMQ 荣获 AWS Differentiated Partner 顶级认证!
  • 基于改进蜂群优化算法的高频金融波动率预测系统 (源码+论文+部署+安装)
  • ES02-常用API
  • qt c++ QTableWidget
  • Gopher URL协议与SSRF二三事
  • 帕累托优化:多目标决策的智慧与艺术
  • “下一代”图像模型——ComfyUI-Flux-Krea本地部署教程,体验划时代的图像质量
  • 计算机视觉(三):opencv环境搭建和图片显示
  • Optional 从 Java 8 到 21 的演进之路
  • 每日算法题【链表】:链表分割、链表的回文结构
  • 关于vscode的右键常用操作以及自定义快捷键
  • 密码管理中注释与重定向密码安全隐患及修复方案
  • 高并发内存池(12)-ThreadCache回收内存
  • Virtual PLCnext Controller 本地网络部署平台
  • Pandas DataFrame 列数操作完全指南
  • 高通平台蓝牙学习-- 基于WCN685x 的蓝牙低功耗(LE)功能
  • 浏览器与计算机网络
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘click’问题
  • k8s部署pgsql集群
  • 【Spring Cloud 微服务】5.架构的智慧枢纽:深度剖析 Nacos 注册中心
  • K8s持久化存储:PV与PVC
  • K8s 二次开发漫游录
  • 前端-npm和yarn的区别
  • 时序数据库的 LSM 树介绍
  • 计算机网络——DNS,ARP,RARP,DHCP,ICMP
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘websockets’问题
  • 时序数据库全景指南:从场景选型到内核拆解
  • Linux(十九)——CPU、I/O、网络与内核参数调优指南
  • 字库原理 GB2312-80