commons-lang3
提供了不少针对Java标准库的补充工具类,合理使用能够简化我们的代码,提高开发效率。这篇文章我们简单了解下commons-lang3
提供的工具类和常见用法。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
在日常开发中,Java标准库的字符串方法可能不完全够用,比如判断前台页面表单传的值是否为空,我们通常既要判断变量是否为null
,又要判断是否为空字符串,最后就不得不写出类似如下的代码:
if (s != null && !"".equals(s)) {
// ...
}
这样就显得代码十分冗长,不利于阅读,而StringUtils
则提供了工具方法,能够简化类似上述这种代码。
//判断字符串是否为空
public static boolean isEmpty(@Nullable CharSequence cs)
// 判断字符串是否不为空
public static boolean isNotEmpty(@Nullable CharSequence cs)
除此之外,StringUtils
还有许多其他方法,我们可以根据自己需求选用。
RandomUtils
能够简化随机数的获取方式。
获取随机的布尔值:
public static boolean nextBoolean()
获取指定范围内的随机数(范围包括头不包括尾):
public static int nextInt(int startInclusive,
int endExclusive)
NumberUtils
最常见的用法是判断字符串是否可以解析为数字,如果不使用NumberUtils
可能需要正则表达式才能判断,或者通过捕捉Integer.parseInt
等方法的异常来实现,显然更加麻烦。
指定字符串是否可解析为数字(包括小数):
public static boolean isParsable(String str)
指定字符串是否全部为数字(不包括小数点等字符):
public static boolean isDigits(String str)
Java自带的时间日期处理工具,使用起来比较麻烦,比如日期解析、格式化需要SimpleDateFormat
,而日期加减又需要Calendar
。DateUtils
对一些常用的操作进行了封装。
对时间增加若干年、月、天等:
public static java.util.Date addMilliseconds(@NotNull java.util.Date date, int amount)
public static java.util.Date addSeconds(@NotNull java.util.Date date, int amount)
public static java.util.Date addMinutes(@NotNull java.util.Date date, int amount)
public static java.util.Date addHours(@NotNull java.util.Date date, int amount)
public static java.util.Date addDays(@NotNull java.util.Date date, int amount)
public static java.util.Date addWeeks(@NotNull java.util.Date date, int amount)
public static java.util.Date addMonths(@NotNull java.util.Date date, int amount)
public static java.util.Date addYears(@NotNull java.util.Date date, int amount)
判断两个时间在指定位(年、月、天)上是否相等:
public static boolean truncatedEquals(@NotNull java.util.Date date1,
@NotNull java.util.Date date2,
int field)
注:field
参数建议使用Calendar.YEAR
、Calendar.MONTH
等常量。
计算两个时间在指定位(年、月、天)上的差值:
public static int truncatedCompareTo(@NotNull java.util.Date date1,
@NotNull java.util.Date date2,
int field)
注:field
参数建议使用Calendar.YEAR
、Calendar.MONTH
等常量。
SystemUtils
这个工具类最常见的用法是获取一些系统信息,比如操作系统、当前JRE路径等,比较实用。下面例子代码能够输出当前的一些系统信息:
import org.apache.commons.lang3.*;
public class Main {
public static void main(String[] args) {
String hostName = SystemUtils.getHostName();
String osName = SystemUtils.OS_NAME;
String language = SystemUtils.USER_LANGUAGE;
String javaVersion = SystemUtils.JAVA_VERSION;
String javaHome = SystemUtils.JAVA_HOME;
System.out.println("hostName " + hostName);
System.out.println("osName " + osName);
System.out.println("language " + language);
System.out.println("javaVersion " + javaVersion);
System.out.println("javaHome " + javaHome);
}
}
输出结果如下。
hostName ubuntu
osName Linux
language en
javaVersion 1.8.0_181
javaHome /usr/lib/jvm/java-8-oracle/jre
此外,还有一个ArchUtils
可以获取处理器的位数(x86、x86_64、IA64等),具体可以参考相关文档。