[关闭]
@File 2020-04-30T05:57:07.000000Z 字数 90172 阅读 348

commons-lang3

java


image_1dnhhr297ljj16da1oa1521jsk9.png-36.5kB

相关连接

官方api

依赖

  1. <dependency>
  2. <groupId>org.apache.commons</groupId>
  3. <artifactId>commons-lang3</artifactId>
  4. <version>3.8.1</version>
  5. </dependency>

lang3 常规工具类

一、AnnotationUtils 注解工具

------------------------------------

二、ArchUtils 系统工具

------------------------------------

三、ArrayUtils 数组工具

static add() 数组添加元素

  1. String[] strs1 = {"李"};
  2. // 添加"大爷"进数组中
  3. String[] strs2 = ArrayUtils.add(strs1, "大爷");
  4. // 结果:[李]
  5. System.out.println(Arrays.asList(strs1));
  6. // 结果:[李, 大爷]
  7. System.out.println(Arrays.asList(strs2));

static addAll() 数组批量添加元素

  1. String[] strs1 = {"李"};
  2. String[] strs2 = {"大","爷"};
  3. // 结果:[李, 大, 爷]
  4. System.out.println(Arrays.asList(ArrayUtils.addAll(strs1,strs2)));
  5. // 结果:[李, 学, 霸]
  6. System.out.println(Arrays.asList(ArrayUtils.addAll(strs1,"学","霸")));

static clone() 克隆数组

  1. String[] strs1 = {"李",null,""};
  2. // 结果:[李, null, ]
  3. System.out.println(Arrays.asList(ArrayUtils.clone(strs1)));

static contains() 是否在数组中

  1. String[] strs1 = {"李","大","爷"};
  2. // 结果:false
  3. System.out.println(ArrayUtils.contains(strs1,null));
  4. // 结果:true
  5. System.out.println(ArrayUtils.contains(strs1,"大"));

static getLength() 取数组长度

  1. String[] strs1 = {"李","大","爷"};
  2. // 结果:0
  3. System.out.println(ArrayUtils.getLength(null));
  4. // 结果:3
  5. System.out.println(ArrayUtils.getLength(strs1));

static hashCode() 取哈希码

  1. String[] strs1 = {"李","大","爷"};
  2. // 结果:629
  3. System.out.println(ArrayUtils.hashCode(null));
  4. // 结果:37939365
  5. System.out.println(ArrayUtils.hashCode(strs1));

static indexOf() 取指定元素的下标

  1. String[] strs1 = {"李","大","爷"};
  2. // 结果:1
  3. System.out.println(ArrayUtils.indexOf(strs1,"大"));
  4. // 结果:-1
  5. System.out.println(ArrayUtils.indexOf(strs1,null));

static lastIndexOf() 取指定元素的最后一个下标

static insert() 元素插入到数组指定位置

  1. String[] strs1 = {"李","大","爷"};
  2. // 结果:[李, 学, 霸, 大, 爷]
  3. System.out.println(Arrays.asList(ArrayUtils.insert(1,strs1, "学","霸")));

static isArrayIndexValid() 数组下标是否有效

  1. String[] strs1 = {"李",null,"爷"};
  2. // 结果:false
  3. System.out.println(Arrays.asList(ArrayUtils.isArrayIndexValid(strs1,3)));
  4. // 结果:true
  5. System.out.println(Arrays.asList(ArrayUtils.isArrayIndexValid(strs1,2)));
  6. // 结果:true
  7. System.out.println(Arrays.asList(ArrayUtils.isArrayIndexValid(strs1,1)));

static isEmpty() 是否为空数组

  1. String[] strs1 = {"李","大","爷"};
  2. String[] strs2 = {null};
  3. String[] strs3 = {};
  4. // 结果:false
  5. System.out.println(ArrayUtils.isEmpty(strs1));
  6. // 结果:false
  7. System.out.println(ArrayUtils.isEmpty(strs2));
  8. // 结果:true
  9. System.out.println(ArrayUtils.isEmpty(strs3));

static isNotEmpty() 是否不为空数组

static isSameLength() 两个数组长度是否一样

  1. String[] strs1 = {"李","大","爷"};
  2. String[] strs2 = {"胡","大","妈"};
  3. String[] strs3 = {null};
  4. String[] strs4 = {};
  5. // 结果:false
  6. System.out.println(ArrayUtils.isSameLength(strs3,strs4));
  7. // 结果:true
  8. System.out.println(ArrayUtils.isSameLength(strs1,strs2));
  9. // 结果:true
  10. System.out.println(ArrayUtils.isSameLength(null,strs4));

static isSameType() 两个数组类型是否一样

  1. String[] strs1 = {"李","大","爷"};
  2. String[] strs2 = {};
  3. // 结果:true
  4. System.out.println(ArrayUtils.isSameType(strs1,strs2))
  5. // 报错!
  6. System.out.println(ArrayUtils.isSameType(strs1,null));

static isSorted() 数组是否根据自然排序

  1. String[] strs1 = {"李","大","爷"};
  2. // 结果:false
  3. System.out.println(ArrayUtils.isSorted(strs1));
  4. // 排序
  5. Arrays.sort(strs1);
  6. // 结果:true
  7. System.out.println(ArrayUtils.isSorted(strs1));

static nullToEmpty() 空数组转换

  1. String[] strs = null;
  2. // 结果:[]
  3. System.out.println(Arrays.asList(ArrayUtils.nullToEmpty(strs)));

static remove() 移除指定位置元素

  1. String[] strs = {"李","大","爷"};
  2. // 结果:[李, 爷]
  3. System.out.println(Arrays.asList(ArrayUtils.remove(strs,1)));
  4. // 报错!
  5. System.out.println(Arrays.asList(ArrayUtils.remove(strs,3)));

static removeAll() 移除指定位置元素(多个)

  1. String[] strs = {"李","大","爷"};
  2. // 结果:[李]
  3. System.out.println(Arrays.asList(ArrayUtils.removeAll(strs,1,2)));
  4. // 报错!
  5. System.out.println(Arrays.asList(ArrayUtils.removeAll(strs,1,3)));

static removeAllOccurences() 移除指定元素(全部)

  1. String[] strs = {"李","大","爷","大"};
  2. // 结果:[李, 爷]
  3. System.out.println(Arrays.asList(ArrayUtils.removeAllOccurences(strs,"大")));

statuc removeElement() 移除指定元素(第一个)

  1. String[] strs = {"李","大","爷","大"};
  2. // 结果:[李, 爷, 大]
  3. System.out.println(Arrays.asList(ArrayUtils.removeElement(strs,"大")));

static removeElements() 移除指定元素(多个)

  1. String[] strs = {"李","大","爷","大"};
  2. // 结果:[李, 大]
  3. System.out.println(Arrays.asList(ArrayUtils.removeElements(strs,"大","爷")));
  4. // 结果:[李, 爷]
  5. System.out.println(Arrays.asList(ArrayUtils.removeElements(strs,"大","大")));

static reverse() 反转数组

  1. String[] strs1 = {"李","大","爷"};
  2. String[] strs2 = {"李","大","爷"};
  3. String[] strs3 = {"李","大","爷"};
  4. // 反转
  5. ArrayUtils.reverse(strs1);
  6. ArrayUtils.reverse(strs2,1,2);
  7. ArrayUtils.reverse(strs2,1,3);
  8. // 结果:[爷, 大, 李]
  9. System.out.println(Arrays.asList(strs1));
  10. // 结果:[李, 爷, 大]
  11. System.out.println(Arrays.asList(strs2));
  12. // 结果:[李, 大, 爷]
  13. System.out.println(Arrays.asList(strs3));

static shift() 元素顺序偏移

  1. String[] strs1 = {"李","大","爷"};
  2. String[] strs2 = {"李","大","爷"};
  3. // 后移两位
  4. ArrayUtils.shift(strs1,2);
  5. // 前移一位
  6. ArrayUtils.shift(strs2,-1);
  7. // 结果:[大, 爷, 李]
  8. System.out.println(Arrays.asList(strs1));
  9. // 结果:[大, 爷, 李]
  10. System.out.println(Arrays.asList(strs2));

static shuffle() 元素顺序打乱

  1. String[] strs = {"李","大","爷"};
  2. // 第一次
  3. ArrayUtils.shuffle(strs);
  4. // 结果: [李, 爷, 大]
  5. System.out.println(Arrays.asList(strs));
  6. // 第二次
  7. ArrayUtils.shuffle(strs);
  8. // 结果: [爷, 李, 大]
  9. System.out.println(Arrays.asList(strs));

static subarray() 数组截取

  1. String[] strs = {"李","大","爷"};
  2. // 截取下标1~2,结果:[大, 爷]
  3. System.out.println(Arrays.asList(ArrayUtils.subarray(strs,1,3)));

static swap() 两个位置的元素调换位置

  1. String[] strs = {"李","大","爷"};
  2. // 调换小标0和1的元素
  3. ArrayUtils.swap(strs,0,1);
  4. // 结果:[大, 李, 爷]
  5. System.out.println(Arrays.asList(strs));

static toArray() 生成数组

  1. String[] strs = ArrayUtils.toArray("李", "大", "爷");

static toMap() 数组转map

  1. String[][] strs = {{"李","大爷"},{"胡","大妈"}};
  2. // 结果:{胡=大妈, 李=大爷}
  3. System.out.println(ArrayUtils.toMap(strs));

static toObject() 转为包装类数组

  1. int[] nums = {1,0,2,4};
  2. Integer[] integers = ArrayUtils.toObject(nums);

static toPrimitive() 转为基本数据数组

  1. Integer[] nums = {1,0,2,4};
  2. int[] ints = ArrayUtils.toPrimitive(nums);

static toString() 转为字符串

  1. int[] nums = {1,0,2,4};
  2. // 结果:{1,0,2,4}
  3. System.out.println(ArrayUtils.toString(nums));
  4. // 结果:{}
  5. System.out.println(ArrayUtils.toString(null));
  6. // 设置备选项,结果:李大爷牛逼
  7. System.out.println(ArrayUtils.toString(null,"李大爷牛逼"));

static toStringArray() 元素转为字符串

  1. Integer[] nums1 = {1,0,2,4};
  2. Integer[] nums2 = {1,0,2,4,null};
  3. // 结果:[1, 0, 2, 4]
  4. System.out.println(Arrays.asList(ArrayUtils.toStringArray(nums1)));
  5. // 设置备选值,结果:[1, 0, 2, 4, 李大爷牛逼]
  6. System.out.println(Arrays.asList(ArrayUtils.toStringArray(nums2,"李大爷牛逼")));
  7. // 报错!
  8. System.out.println(Arrays.asList(ArrayUtils.toStringArray(null,"李大爷牛逼")));

------------------------------------

四、BitField 位映射字段的操作

------------------------------------

五、BooleanUtils 布尔工具

static and() bool 数组中是否都为真

  1. boolean[] arr1 = {true,false,true};
  2. boolean[] arr2 = {true,true,true};
  3. // 结果:false
  4. System.out.println(BooleanUtils.and(arr1));
  5. // 结果:true
  6. System.out.println(BooleanUtils.and(arr2));

static compare() bool 比较

  1. // 结果:0
  2. System.out.println(BooleanUtils.compare(true,true));
  3. // 结果:1
  4. System.out.println(BooleanUtils.compare(true,false));
  5. // 结果:-1
  6. System.out.println(BooleanUtils.compare(false,true));

static isFalse() 是否为 false

  1. // 结果:true
  2. System.out.println(BooleanUtils.isFalse(false));
  3. // 结果:false
  4. System.out.println(BooleanUtils.isFalse(true));

static isNotFalse() 是否不为 false

  1. // 结果:false
  2. System.out.println(BooleanUtils.isNotFalse(false));
  3. // 结果:true
  4. System.out.println(BooleanUtils.isNotFalse(true));

static isTrue() 是否为 true

  1. // 结果:false
  2. System.out.println(BooleanUtils.isTrue(false));
  3. // 结果:true
  4. System.out.println(BooleanUtils.isTrue(true));

static isNotTrue() 是否不为 true

  1. // 结果:true
  2. System.out.println(BooleanUtils.isNotTrue(false));
  3. // 结果:false
  4. System.out.println(BooleanUtils.isNotTrue(true));

static negate() 取反

  1. // 结果:true
  2. System.out.println(BooleanUtils.negate(false));
  3. // 结果:false
  4. System.out.println(BooleanUtils.negate(true));

static or() bool 数组中至少存在一个真

  1. boolean[] arr1 = {true,false,true};
  2. boolean[] arr2 = {false,false,false};
  3. // 结果:true
  4. System.out.println(BooleanUtils.or(arr1));
  5. // 结果:false
  6. System.out.println(BooleanUtils.or(arr2));

static toBoolean() 转为bool

  1. // 结果:false
  2. System.out.println(BooleanUtils.toBoolean(0));
  3. // 结果:true
  4. System.out.println(BooleanUtils.toBoolean(1));
  5. // 结果:false
  6. System.out.println(BooleanUtils.toBoolean(""));
  7. // 结果:false
  8. System.out.println(BooleanUtils.toBoolean("aaa"));

static toBooleanDefaultIfNull() 取bool结果并设置备选值

  1. // 结果:true
  2. System.out.println(BooleanUtils.toBooleanDefaultIfNull(null,true));
  3. // 结果:false
  4. System.out.println(BooleanUtils.toBooleanDefaultIfNull(false,true));

static toBooleanObject() 自定义判断规则

param1: 用作判断的值
param2: 为 true 的规则
param3: 为 false 的规则
param4: 为 null 的规则

  1. // ----------- 数值判断
  2. // 基本的 0:假,结果:false
  3. System.out.println(BooleanUtils.toBooleanObject(0));
  4. // 0 与 true 规则匹配成功,结果:true
  5. System.out.println(BooleanUtils.toBooleanObject(0,0,2,1));
  6. // 0 先与 true 规则匹配成功,所以忽略了 null 规则,结果:true
  7. System.out.println(BooleanUtils.toBooleanObject(0,0,2,0));
  8. // 1 与 null 规则匹配成功,结果:null
  9. System.out.println(BooleanUtils.toBooleanObject(1,0,2,1));
  10. // 2 与 false 规则匹配成功,结果:false
  11. System.out.println(BooleanUtils.toBooleanObject(2,0,2,1));
  12. // 3 匹配不到任何规则,所以这里报错了!
  13. System.out.println(BooleanUtils.toBooleanObject(3,0,2,1));
  14. // ------------ 字符串判断
  15. // 基本的 所有字符串都为:null,结果:null
  16. System.out.println(BooleanUtils.toBooleanObject("李"));
  17. // 李 与 true 规则匹配成功,结果:true
  18. System.out.println(BooleanUtils.toBooleanObject("李","李","大","爷"));
  19. // 大 与 false 规则匹配成功,结果:false
  20. System.out.println(BooleanUtils.toBooleanObject("大","李","大","爷"));
  21. // 爷 与 null 规则匹配成功,结果:null
  22. System.out.println(BooleanUtils.toBooleanObject("爷","李","大","爷"));
  23. // 啊 匹配不到任何规则,所以这里报错了!
  24. System.out.println(BooleanUtils.toBooleanObject("啊","李","大","爷"));

static toInteger() bool 转 int

  1. // 结果:1
  2. System.out.println(BooleanUtils.toInteger(true));
  3. // 结果:0
  4. System.out.println(BooleanUtils.toInteger(false));
  5. // 结果:1
  6. System.out.println(BooleanUtils.toInteger(true,1,2));
  7. // 结果:2
  8. System.out.println(BooleanUtils.toInteger(false,1,2));
  9. // 结果:3
  10. System.out.println(BooleanUtils.toInteger(null,1,2,3));

static toIntegerObject() bool 转 Integer

  1. // 结果:1
  2. System.out.println(BooleanUtils.toIntegerObject(true));
  3. // 结果:0
  4. System.out.println(BooleanUtils.toIntegerObject(false));
  5. // 结果:null
  6. System.out.println(BooleanUtils.toIntegerObject(null));
  7. // 结果:1
  8. System.out.println(BooleanUtils.toIntegerObject(true,1,2));
  9. // 结果:2
  10. System.out.println(BooleanUtils.toIntegerObject(false,1,2));
  11. // 结果:3
  12. System.out.println(BooleanUtils.toIntegerObject(null,1,2,3));

static toString() bool 转字符串

  1. // 结果:李
  2. System.out.println(BooleanUtils.toString(true,"李","大"));
  3. // 结果:大
  4. System.out.println(BooleanUtils.toString(false,"李","大"));
  5. // 结果:爷
  6. System.out.println(BooleanUtils.toString(null,"李","大","爷"));

static toStringOnOff() bool 转字符串(on|off|null)

  1. // 结果:on
  2. System.out.println(BooleanUtils.toStringOnOff(true));
  3. // 结果:off
  4. System.out.println(BooleanUtils.toStringOnOff(false));
  5. // 结果:null
  6. System.out.println(BooleanUtils.toStringOnOff(null));

static toStringTrueFalse() bool 转字符串(true|false|null)

  1. // 结果:"true"
  2. System.out.println(BooleanUtils.toStringTrueFalse(true));
  3. // 结果:"false"
  4. System.out.println(BooleanUtils.toStringTrueFalse(false));
  5. // 结果:"null"
  6. System.out.println(BooleanUtils.toStringTrueFalse(null));

static toStringYesNo() bool 转字符串(yes|no|null)

  1. // 结果:yes
  2. System.out.println(BooleanUtils.toStringYesNo(true));
  3. // 结果:no
  4. System.out.println(BooleanUtils.toStringYesNo(false));
  5. // 结果:null
  6. System.out.println(BooleanUtils.toStringYesNo(null));

static xor() 给 bool 数组做异或运算

  1. boolean[] bools1 = {true,true,false,true};
  2. boolean[] bools2 = {true,true,true};
  3. boolean[] bools3 = {true,false,false,true};
  4. // 结果:true
  5. System.out.println(BooleanUtils.xor(bools1));
  6. // 结果:true
  7. System.out.println(BooleanUtils.xor(bools2));
  8. // 结果:false
  9. System.out.println(BooleanUtils.xor(bools3));

------------------------------------

六、CharEncoding (弃用)

------------------------------------

七、CharSequenceUtils 空安全工具

static subSequence() 截取一个位数后的字符串

  1. // 结果:null
  2. System.out.println(CharSequenceUtils.subSequence(null, 1));
  3. // 结果:大爷
  4. System.out.println(CharSequenceUtils.subSequence("李大爷", 1));
  5. // 报错!垃圾得很!!
  6. System.out.println(CharSequenceUtils.subSequence("李大爷", 5));

------------------------------------

八、CharSet

------------------------------------

九、CharSetUtils

------------------------------------

十、CharUtils 字符工具

------------------------------------

十一、ClassPathUtils 类路径工具

------------------------------------

十二、ClassUtils 类工具

static convertClassesToClassNames() 取类列表中所有类名

  1. List<Class<?>> clsList = new ArrayList<>(1);
  2. clsList.add(Test.class);
  3. // 结果:[com.lidaye.demo.Test]
  4. System.out.println(ClassUtils.convertClassesToClassNames(clsList));

static convertClassNamesToClasses() 取类名列表中所有类对象

  1. List<String> list = new ArrayList<>(2);
  2. // 存在的类名
  3. list.add("com.lidaye.demo.Test");
  4. // 不存在的类名
  5. list.add("com.lidaye.demo.Demo");
  6. // 结果:[class com.lidaye.demo.Test, null]
  7. System.out.println(ClassUtils.convertClassNamesToClasses(list));

static getAbbreviatedName() 取缩写类名

  1. // 结果:c.l.d.Test
  2. System.out.println(ClassUtils.getAbbreviatedName(Test.class,1));
  3. // 结果:c.l.d.Test
  4. System.out.println(ClassUtils.getAbbreviatedName("com.lidaye.demo.Test",1));
  5. // 结果:com.lidaye.demo.Test
  6. System.out.println(ClassUtils.getAbbreviatedName(Test.class,30));

static getAllInterfaces() 取类所有实现的接口

接口实现及继承关系
Test:public class Test extends TestParent implements ITest
TestParent:public class TestParent implements Serializable
ITest:public interface ITest extends ITestParent

  1. /**
  2. 结果:
  3. [
  4. interface com.lidaye.demo.ITest,
  5. interface com.lidaye.demo.ITestParent,
  6. interface java.io.Serializable
  7. ]
  8. */
  9. System.out.println(ClassUtils.getAllInterfaces(Test.class));

static getAllSuperclasses() 取类所有继承的类

继承关系
Test:public class Test extends TestParent implements ITest
TestParent:public class TestParent implements Serializable

  1. /**
  2. 结果:
  3. [
  4. class com.lidaye.demo.TestParent,
  5. class java.lang.Object
  6. ]
  7. */
  8. System.out.println(ClassUtils.getAllSuperclasses(Test.class));

static getCanonicalName() 取规范类名

  1. // 结果:com.lidaye.demo.Test
  2. System.out.println(ClassUtils.getCanonicalName(Test.class));
  3. // 设置了空备用值,结果:李大爷
  4. System.out.println(ClassUtils.getCanonicalName(null,"李大爷"));
  5. // 结果:com.lidaye.demo.Test
  6. System.out.println(ClassUtils.getCanonicalName(new Test(),"李大爷"));

static getClass() 取Class对象

  1. // 以下结果全部为:class com.lidaye.demo.Test
  2. try {
  3. // 默认初始化
  4. System.out.println(ClassUtils.getClass("com.lidaye.demo.Test"));
  5. // 设置为不初始化
  6. System.out.println(ClassUtils.getClass("com.lidaye.demo.Test",false));
  7. // 加入加载器
  8. System.out.println(ClassUtils.getClass(Test.class.getClassLoader(),"com.lidaye.demo.Test"));
  9. System.out.println(ClassUtils.getClass(Test.class.getClassLoader(),"com.lidaye.demo.Test",false));
  10. } catch (ClassNotFoundException e) {
  11. // 失败会报错
  12. }

static getName() 取类名

  1. // 结果:com.lidaye.demo.Test
  2. System.out.println(ClassUtils.getName(Test.class));
  3. // 设置了空备用值,结果:李大爷
  4. System.out.println(ClassUtils.getName(null,"李大爷"));
  5. // 结果:com.lidaye.demo.Test
  6. System.out.println(ClassUtils.getName(new Test(),"李大爷"));

static getPackageCanonicalName() 取包名(根据规范类名)

  1. // 结果:com.lidaye.demo
  2. System.out.println(ClassUtils.getPackageCanonicalName(Test.class));
  3. // 结果:com.lidaye.demo
  4. System.out.println(ClassUtils.getPackageCanonicalName("com.lidaye.demo.Test"));
  5. // 设置了空备用值,结果:李大爷
  6. System.out.println(ClassUtils.getPackageCanonicalName(null,"李大爷"));
  7. // 结果:com.lidaye.demo
  8. System.out.println(ClassUtils.getPackageCanonicalName(new Test(),"李大爷"));

static getPackageName() 取包名

  1. // 结果:com.lidaye.demo
  2. System.out.println(ClassUtils.getPackageName(Test.class));
  3. // 结果:com.lidaye.demo
  4. System.out.println(ClassUtils.getPackageName("com.lidaye.demo.Test"));
  5. // 设置了空备用值,结果:李大爷
  6. System.out.println(ClassUtils.getPackageName(null,"李大爷"));
  7. // 结果:com.lidaye.demo
  8. System.out.println(ClassUtils.getPackageName(new Test(),"李大爷"));

static getPublicMethod() 取方法

  1. try {
  2. // 结果:public void com.lidaye.demo.Test.setName(java.lang.String)
  3. System.out.println(ClassUtils.getPublicMethod(Test.class,"setName",String.class));
  4. } catch (NoSuchMethodException e) {
  5. e.printStackTrace();
  6. }

static getShortCanonicalName() 取短规范类名

  1. // 结果:Test
  2. System.out.println(ClassUtils.getShortCanonicalName(Test.class));
  3. // 结果:Test
  4. System.out.println(ClassUtils.getShortCanonicalName("com.lidaye.demo.Test"));
  5. // 设置了空备用值,结果:李大爷
  6. System.out.println(ClassUtils.getShortCanonicalName(null,"李大爷"));
  7. // 结果:Test
  8. System.out.println(ClassUtils.getShortCanonicalName(new Test(),"李大爷"));

static getShortClassName() 取短类名

  1. // 结果:Test
  2. System.out.println(ClassUtils.getShortClassName(Test.class));
  3. // 结果:Test
  4. System.out.println(ClassUtils.getShortClassName("com.lidaye.demo.Test"));
  5. // 设置了空备用值,结果:李大爷
  6. System.out.println(ClassUtils.getShortClassName(null,"李大爷"));
  7. // 结果:Test
  8. System.out.println(ClassUtils.getShortClassName(new Test(),"李大爷"));

static getSimpleName() 取简单类名

  1. // 结果:Test
  2. System.out.println(ClassUtils.getSimpleName(Test.class));
  3. // 设置了空备用值,结果:李大爷
  4. System.out.println(ClassUtils.getSimpleName(null,"李大爷"));
  5. // 结果:Test
  6. System.out.println(ClassUtils.getSimpleName(new Test(),"李大爷"));

static hierarchy() 获取类自身和继承的所有类对象

  1. Iterable<Class<?>> hierarchy1 = ClassUtils.hierarchy(Test.class);
  2. // 开启扫描接口,默认是不扫描(ClassUtils.Interfaces.EXCLUDE)
  3. Iterable<Class<?>> hierarchy2 = ClassUtils.hierarchy(Test.class, ClassUtils.Interfaces.INCLUDE);
  4. /** 结果:
  5. class com.lidaye.demo.Test
  6. class com.lidaye.demo.TestParent
  7. class java.lang.Object
  8. */
  9. hierarchy1.forEach(System.out::println);
  10. /** 结果:
  11. class com.lidaye.demo.Test
  12. interface com.lidaye.demo.ITest
  13. interface com.lidaye.demo.ITestParent
  14. class com.lidaye.demo.TestParent
  15. interface java.io.Serializable
  16. class java.lang.Object
  17. */
  18. hierarchy2.forEach(System.out::println);

static isAssignable() 类是否可自然转换

  1. Class<?>[] clsArr1 = {Test.class,Test.class};
  2. Class<?>[] clsArr2 = {TestParent.class,Test.class};
  3. // 结果:true
  4. System.out.println(ClassUtils.isAssignable(Test.class,TestParent.class));
  5. // 结果:false
  6. System.out.println(ClassUtils.isAssignable(TestParent.class,Test.class));
  7. // 结果:true
  8. System.out.println(ClassUtils.isAssignable(clsArr1,clsArr2));

static isInnerClass() 是否为内部类

  1. // 结果:false
  2. System.out.println(ClassUtils.isInnerClass(Test.class));
  3. // 结果:false
  4. System.out.println(ClassUtils.isInnerClass(HashMap.class));
  5. // 结果:true
  6. System.out.println(ClassUtils.isInnerClass(HashMap.Entry.class));

static isPrimitiveOrWrapper() 是否为基本类型或包装类

  1. // 结果:false
  2. System.out.println(ClassUtils.isPrimitiveOrWrapper(String.class));
  3. // 下面结果全都为:true
  4. System.out.println(ClassUtils.isPrimitiveOrWrapper(boolean.class));
  5. System.out.println(ClassUtils.isPrimitiveOrWrapper(Long.class));
  6. System.out.println(ClassUtils.isPrimitiveOrWrapper(int.class));
  7. System.out.println(ClassUtils.isPrimitiveOrWrapper(Short.class));
  8. System.out.println(ClassUtils.isPrimitiveOrWrapper(byte.class));
  9. System.out.println(ClassUtils.isPrimitiveOrWrapper(Double.class));
  10. System.out.println(ClassUtils.isPrimitiveOrWrapper(float.class));
  11. System.out.println(ClassUtils.isPrimitiveOrWrapper(Character.class));

static isPrimitiveWrapper() 是否为包装类

  1. // 结果:false
  2. System.out.println(ClassUtils.isPrimitiveWrapper(String.class));
  3. // 下面结果全都为:true
  4. System.out.println(ClassUtils.isPrimitiveWrapper(Boolean.class));
  5. System.out.println(ClassUtils.isPrimitiveWrapper(Long.class));
  6. System.out.println(ClassUtils.isPrimitiveWrapper(Integer.class));
  7. System.out.println(ClassUtils.isPrimitiveWrapper(Short.class));
  8. System.out.println(ClassUtils.isPrimitiveWrapper(Byte.class));
  9. System.out.println(ClassUtils.isPrimitiveWrapper(Double.class));
  10. System.out.println(ClassUtils.isPrimitiveWrapper(Float.class));
  11. System.out.println(ClassUtils.isPrimitiveWrapper(Character.class));

static primitivesToWrappers() 基本类型类数组转为包装类数组

  1. Class<?>[] classes = ClassUtils.primitivesToWrappers(int.class, short.class, byte.class);
  2. /** 结果:
  3. [
  4. class java.lang.Integer,
  5. class java.lang.Short,
  6. class java.lang.Byte
  7. ]
  8. */
  9. System.out.println(Arrays.asList(classes));

static primitiveToWrapper() 基本类型类转包装类

  1. // 以下结果都为:class java.lang.Integer
  2. System.out.println(ClassUtils.primitiveToWrapper(int.class));
  3. System.out.println(ClassUtils.primitiveToWrapper(Integer.class));

static toClass() 取数组中对象的类

  1. Object[] arr = {new Test(),new TestParent(),1,"李大爷"};
  2. /** 结果:
  3. [
  4. class com.lidaye.demo.Test,
  5. class com.lidaye.demo.TestParent,
  6. class java.lang.Integer,
  7. class java.lang.String
  8. ]
  9. */
  10. System.out.println(Arrays.asList(ClassUtils.toClass(arr)));

static wrappersToPrimitives() 包装类数组转成基本类型类数组

  1. Class<?>[] arr = {Test.class,TestParent.class,Integer.class,Short.class};
  2. Class<?>[] classes1 = ClassUtils.wrappersToPrimitives(arr);
  3. // 结果:[null, null, int, short]
  4. System.out.println(Arrays.asList(classes1));

static wrapperToPrimitive() 包装类转换成基本类型类

  1. // 结果:int
  2. System.out.println(ClassUtils.wrapperToPrimitive(Integer.class));

------------------------------------

十三、Conversion 类型装换工具

static binaryBeMsb0ToHexDigit() bool数组转char

  1. boolean[] bools1 = {true,true,false,true};
  2. boolean[] bools2 = {true,true,false};
  3. char c1 = Conversion.binaryBeMsb0ToHexDigit(bools1);
  4. char c2 = Conversion.binaryBeMsb0ToHexDigit(bools1,1);
  5. char c3 = Conversion.binaryBeMsb0ToHexDigit(bools2);
  6. // 结果:d
  7. System.out.println(c1);
  8. // 结果:6
  9. System.out.println(c2);
  10. // 结果:6
  11. System.out.println(c3);

stathc binaryToByte() bool数组转byte

  1. boolean[] bools = {true,true,false,true};
  2. byte b = Conversion.binaryToByte(bools, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(b);

static binaryToHexDigit() bool数组转char

  1. boolean[] bools = {true,true,false,true};
  2. char c1 = Conversion.binaryToHexDigit(bools);
  3. char c2 = Conversion.binaryToHexDigit(bools,1);
  4. // 结果:b
  5. System.out.println(c1);
  6. // 结果:5
  7. System.out.println(c2);

static binaryToHexDigitMsb0_4bits() bool数组转char

  1. boolean[] bools = {true,true,false,true,true};
  2. char c1 = Conversion.binaryToHexDigitMsb0_4bits(bools);
  3. // 数组-1必须大于4
  4. char c2 = Conversion.binaryToHexDigitMsb0_4bits(bools,1);
  5. // 结果:d
  6. System.out.println(c1);
  7. // 结果:b
  8. System.out.println(c2);

static binaryToInt() bool数组转int

  1. boolean[] bools = {true,true,false,true};
  2. int i = Conversion.binaryToInt(bools, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(i);

static binaryToLong() bool数组转long

  1. boolean[] bools = {true,true,false,true};
  2. long l = Conversion.binaryToLong(bools, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(l);

static binaryToShort() bool数组转short

  1. boolean[] bools = {true,true,false,true};
  2. short s = Conversion.binaryToShort(bools, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(s);

static byteArrayToInt() byte数组转int

  1. byte[] bytes = {1,1,0,0};
  2. int i = Conversion.byteArrayToInt(bytes, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(i);

static byteArrayToLong() byte数组转long

  1. byte[] bytes = {1,1,0,0};
  2. long l = Conversion.byteArrayToLong(bytes, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(l);

static byteArrayToShort() byte数组转short

  1. byte[] bytes = {1,1,0,0};
  2. short s = Conversion.byteArrayToShort(bytes, 1, (byte) 1, 1, 1);
  3. // 结果:3
  4. System.out.println(s);

static byteArrayToUuid() byte数组转uuid

  1. byte[] bytes = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
  2. // 必须大于15个字节
  3. UUID uuid = Conversion.byteArrayToUuid(bytes, 1);
  4. // 结果:09080706-0504-0302-1110-0f0e0d0c0b0a
  5. System.out.println(uuid);

static byteToBinary() byte转bool数组

  1. boolean[] bools = {true,true,false,false};
  2. boolean[] booleans = Conversion.byteToBinary((byte) 1, 1, bools, 1, 1);
  3. for (boolean bool : booleans) {
  4. System.out.println(bool);
  5. }
  6. /* 结果:
  7. true
  8. false
  9. false
  10. false
  11. */

static byteToHex() 字节转字符串

  1. String s = Conversion.byteToHex((byte) 1, 1, "李大爷", 1, 1);
  2. // 结果:李0爷
  3. System.out.println(s);

static hexDigitMsb0ToBinary() 字符转bool数组

  1. boolean[] booleans = Conversion.hexDigitMsb0ToBinary('d');
  2. for (boolean bool : booleans) {
  3. System.out.println(bool);
  4. }
  5. /* 结果:
  6. true
  7. true
  8. false
  9. true
  10. */

static hexDigitToBinary() 字符转bool数组

  1. boolean[] booleans = Conversion.hexDigitToBinary('d');
  2. for (boolean bool : booleans) {
  3. System.out.println(bool);
  4. }

static hexDigitMsb0ToInt() 字符转整数

  1. int i = Conversion.hexDigitMsb0ToInt('d');
  2. // 结果:11
  3. System.out.println(i);

static hexDigitToInt() 字符转整数

  1. int i = Conversion.hexDigitToInt('d');
  2. // 结果:13
  3. System.out.println(i);

static hexToByte() 字符串转byte

  1. byte b = Conversion.hexToByte("ddd", 1, (byte) 1, 1, 1);
  2. // 结果:27
  3. System.out.println(b);

static hexToInt() 字符串转整数

  1. int i = Conversion.hexToInt("ddd", 1, 1, 1, 1);
  2. // 结果:27
  3. System.out.println(i);

static hexToLong() 字符串转long

  1. long l = Conversion.hexToLong("ddd", 1, 1, 1, 1);
  2. // 结果:27
  3. System.out.println(l);

static hexToShort() 字符串转short

  1. short s = Conversion.hexToShort("ddd", 1, (short) 1, 1, 1);
  2. // 结果:27
  3. System.out.println(s);

static intArrayToLong() int数组转long

  1. int[] ints = {1,1,0,0};
  2. long l = Conversion.intArrayToLong(ints, 1, 1, 1, 1);
  3. // 结果:3
  4. System.out.println(l);

static intToBinary() int转bool数组

  1. boolean[] bools = {true,true,false,false};
  2. boolean[] booleans = Conversion.intToBinary(1, 1, bools, 1, 1);
  3. for (boolean bool : booleans) {
  4. System.out.println(bool);
  5. }
  6. /* 结果:
  7. true
  8. false
  9. false
  10. false
  11. */

static intToByteArray() int转byte数组

  1. byte[] bytes = {1,1,0,0};
  2. byte[] bytes1 = Conversion.intToByteArray(1, 1, bytes, 1, 1);
  3. for (byte b : bytes1) {
  4. System.out.println(b);
  5. }
  6. /* 结果:
  7. 1
  8. 0
  9. 0
  10. 0
  11. */

static intToHex() int转字符串

  1. String s = Conversion.intToHex(1, 1, "李大爷", 1, 1);
  2. // 李0爷
  3. System.out.println(s);

static intToHexDigit() int转16进制

  1. char c = Conversion.intToHexDigit(12);
  2. // 结果:x
  3. System.out.println(c);

static intToHexDigitMsb0() int转16进制(数字代替)

  1. char c = Conversion.intToHexDigitMsb0(12);
  2. // 结果:3
  3. System.out.println(c);

static intToShortArray() int转short数组

  1. short[] shorts = {1,1,0,0};
  2. short[] shorts1 = Conversion.intToShortArray(1, 1, shorts, 1, 1);
  3. for (short s : shorts1) {
  4. System.out.println(s);
  5. }
  6. /* 结果:
  7. 1
  8. 0
  9. 0
  10. 0
  11. */

static longToBinary() long转bool数组

  1. boolean[] bools = {true,true,false,false};
  2. boolean[] booleans = Conversion.longToBinary(1, 1, bools, 1, 1);
  3. for (boolean b : booleans) {
  4. System.out.println(b);
  5. }
  6. /* 结果:
  7. true
  8. false
  9. false
  10. false
  11. */

static longToByteArray() long转byte数组

  1. byte[] bytes = {1,1,0,0};
  2. byte[] bytes1 = Conversion.longToByteArray(1, 1, bytes, 1, 1);
  3. for (byte b : bytes1) {
  4. System.out.println(b);
  5. }
  6. /* 结果:
  7. 1
  8. 0
  9. 0
  10. 0
  11. */

static longToHex() long转字符串

  1. String s = Conversion.longToHex(1, 1, "李大爷", 1, 1);
  2. // 结果:李0爷
  3. System.out.println(s);

static longToIntArray() long转int数组

  1. int[] ints = {1,1,0,0};
  2. int[] ints1 = Conversion.longToIntArray(1, 1, ints, 1, 1);
  3. for (int i : ints1) {
  4. System.out.println(i);
  5. }
  6. /* 结果:
  7. 1
  8. 0
  9. 0
  10. 0
  11. */

static longToShortArray() long转short数组

  1. short[] shorts = {1,1,0,0};
  2. short[] shorts1 = Conversion.longToShortArray(1, 1, shorts, 1, 1);
  3. for (short s : shorts1) {
  4. System.out.println(s);
  5. }
  6. /* 结果:
  7. 1
  8. 0
  9. 0
  10. 0
  11. */

static shortArrayToInt() short数组转int

  1. short[] shorts = {1,1,0,0};
  2. int i = Conversion.shortArrayToInt(shorts, 1, 1, 1, 1);
  3. // 结果:3
  4. System.out.println(i);

static shortArrayToLong() short数组转long

  1. short[] shorts = {1,1,0,0};
  2. long l = Conversion.shortArrayToLong(shorts, 1, 1, 1, 1);
  3. // 结果:3
  4. System.out.println(l);

static shortToBinary() short转boolear

  1. boolean[] bools = {true,true,false,false};
  2. boolean[] booleans = Conversion.shortToBinary((short) 1, 1, bools, 1, 1);
  3. for (boolean b : booleans) {
  4. System.out.println(b);
  5. }
  6. /* 结果:
  7. true
  8. false
  9. false
  10. false
  11. */

static shortToByteArray() short转byte数组

  1. byte[] bytes = {1,1,0,0};
  2. byte[] bytes1 = Conversion.shortToByteArray((short) 1, 1, bytes, 1, 1);
  3. for (byte b : bytes1) {
  4. System.out.println(b);
  5. }
  6. /* 结果:
  7. 1
  8. 0
  9. 0
  10. 0
  11. */

static shortToHex() short转字符串

  1. String s = Conversion.shortToHex((short) 1, 1, "李大爷", 1, 1);
  2. // 结果:李0爷
  3. System.out.println(s);

static uuidToByteArray uuid转byte数组

  1. byte[] bytes = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
  2. UUID uuid = Conversion.byteArrayToUuid(bytes, 1);
  3. byte[] bytes1 = Conversion.uuidToByteArray(uuid, bytes, 1, 1);
  4. for (byte b : bytes1) {
  5. System.out.println(b);
  6. }
  7. /* 结果:
  8. 1
  9. 2
  10. 3
  11. 4
  12. 5
  13. 6
  14. 7
  15. 8
  16. 9
  17. 10
  18. 11
  19. 12
  20. 13
  21. 14
  22. 15
  23. 16
  24. 17
  25. */

------------------------------------

十四、EnumUtils 枚举工具

------------------------------------

十五、Functions function 工具

------------------------------------

十六、LocaleUtils

------------------------------------

十七、ObjectUtils 对象工具

static allNotNull() 都不为空(多选)

  1. String str = "";
  2. Integer num = 0;
  3. Double f = 0.0;
  4. // 结果:true
  5. System.out.println(ObjectUtils.allNotNull(str, num, f));
  6. // 结果:false
  7. System.out.println(ObjectUtils.allNotNull(str, num, f, null));

static anyNotNull() 至少有一个不为空(多选)

  1. String str = "";
  2. Integer num = 0;
  3. Double f = 0.0;
  4. // 结果:true
  5. System.out.println(ObjectUtils.anyNotNull(str, num, f));
  6. System.out.println(ObjectUtils.anyNotNull(str, num, f, null));

static clone() 克隆对象

  1. // 克隆字符串
  2. String str = "哈哈哈哈";
  3. String cloneStr = ObjectUtils.cloneIfPossible(str);
  4. // 克隆效果
  5. System.out.println("字符串克隆效果:"+cloneStr);
  6. cloneStr = "啊啊啊啊";
  7. // 克隆map
  8. HashMap<String, String> map = new HashMap<>(1);
  9. map.put("name","李大爷");
  10. HashMap<String, String> cloneMap = ObjectUtils.cloneIfPossible(map);
  11. // 克隆效果
  12. System.out.println("map克隆效果:"+cloneMap);
  13. cloneMap.put("name","李学霸");
  14. // 克隆自定义实例
  15. Test test = new Test();
  16. test.setName("李大爷");
  17. Test cloneTest = ObjectUtils.cloneIfPossible(test);
  18. System.out.println("实体类克隆效果:"+cloneTest);
  19. cloneTest.setName("李学霸");
  20. System.out.println("\r\n最终效果:");
  21. System.out.println(str);
  22. System.out.println(cloneStr);
  23. System.out.println(map);
  24. System.out.println(cloneMap);
  25. System.out.println(test);
  26. System.out.println(cloneTest);
  27. /* 输出结果,实体类克隆失败
  28. 字符串克隆效果:哈哈哈哈
  29. map克隆效果:{name=李大爷}
  30. 实体类克隆效果:Test{name='李大爷'}
  31. 最终效果:
  32. 哈哈哈哈
  33. 啊啊啊啊
  34. {name=李大爷}
  35. {name=李学霸}
  36. Test{name='李学霸'}
  37. Test{name='李学霸'}
  38. */

static compare() 比较大小

  1. // 结果:-1
  2. System.out.println(ObjectUtils.compare("A", "B"));
  3. // 结果:1
  4. System.out.println(ObjectUtils.compare('F', 'E'));
  5. // 结果:0
  6. System.out.println(ObjectUtils.compare(10, 10
  7. // 结果:1
  8. System.out.println(ObjectUtils.compare(10, null));
  9. // 结果:-1
  10. System.out.println(ObjectUtils.compare(10, null, true));

static CONST_BYTE() 整数常量转字节

  1. byte b = ObjectUtils.CONST_BYTE(1);

static CONST_SHORT() 整数常量转小整数

  1. short s = ObjectUtils.CONST_SHORT(1);

static CONST() 常量转变量

static defaultIfNull() 带默认值取值

  1. String str = "李大爷";
  2. // 结果:李大爷
  3. System.out.println(ObjectUtils.defaultIfNull(str, "李学霸"));
  4. // 结果:李学霸
  5. System.out.println(ObjectUtils.defaultIfNull(null, "李学霸"));

static firstNonNull() 取第一个不null的值

  1. Serializable value1 = ObjectUtils.firstNonNull(null, 1, "李大爷");
  2. String value2 = ObjectUtils.firstNonNull(null, "", "\r\n", "李大爷");
  3. // 结果:1
  4. System.out.println(value1);
  5. // 结果:""
  6. System.out.println(value2);

static identityToString() 取对象原始的 toString 结果

  1. Test test = new Test();
  2. StringBuilder sb = new StringBuilder();
  3. // 结果存到 StringBuilder 中
  4. ObjectUtils.identityToString(sb,test);
  5. // 结果:Test{name='null'}
  6. System.out.println(test);
  7. // 结果:com.lidaye.demo.Test@72ea2f77
  8. System.out.println(ObjectUtils.identityToString(test));
  9. // 结果:com.lidaye.demo.Test@72ea2f77
  10. System.out.println(sb);

static isEmpty() 倒的包里面已经没有了这个方法

static max() 取最大值

  1. // 结果:爷
  2. System.out.println(ObjectUtils.max("李","大","爷"));
  3. // 结果:30
  4. System.out.println(ObjectUtils.max(20,null,30));
  5. // 结果:a
  6. System.out.println(ObjectUtils.max('F','a','Z'));

static median() 取中间值

  1. // 结果:李
  2. System.out.println(ObjectUtils.median("李","大","爷"));
  3. // 不能有null,报错!
  4. System.out.println(ObjectUtils.median(20,null,30));
  5. // 结果:Z
  6. System.out.println(ObjectUtils.median('F','a','Z'));
  7. // 结果:3
  8. System.out.println(ObjectUtils.median(3,1,2,4,6));

static min() 取最小值

  1. // 结果:大
  2. System.out.println(ObjectUtils.min("李","大","爷"));
  3. // 结果:20
  4. System.out.println(ObjectUtils.min(20,null,30));
  5. // 结果:F
  6. System.out.println(ObjectUtils.min('F','a','Z'));

static mode() 重复最多的值

  1. // 结果:李
  2. System.out.println(ObjectUtils.mode("李","大","爷","李","学","霸"));
  3. // 结果:30
  4. System.out.println(ObjectUtils.mode(20,null,30,60,50,30));
  5. // 结果:null
  6. System.out.println(ObjectUtils.mode('F','a','Z'));

static notEqual() 比较是否不一样

  1. // 结果:false
  2. System.out.println(ObjectUtils.notEqual("李","李"));
  3. // 结果:true
  4. System.out.println(ObjectUtils.notEqual(20,null));

------------------------------------

十八、RandomStringUtils 随机字符串工具

static random() 获取随机字符串

  1. // 随机乱码,结果:𠻶鏦🔹𠀧֣
  2. System.out.println(RandomStringUtils.random(8));
  3. // 随机英文和数字,结果:MZ0zGCi6
  4. System.out.println(RandomStringUtils.random(8,true,true));
  5. // 随机数字,结果:68387073
  6. System.out.println(RandomStringUtils.random(8,false,true));
  7. // 随机英文,结果:pGlamVFZ
  8. System.out.println(RandomStringUtils.random(8,true,false));
  9. // 随机乱码另一种实现,结果:𦇣ਣ뇟𣇼꿛
  10. System.out.println(RandomStringUtils.random(8,false,false));
  11. // 指定范围随机,结果:421A545A
  12. System.out.println(RandomStringUtils.random(8,0,66,true,true));
  13. // 指定随机字符串,结果:大大大大大爷大李
  14. System.out.println(RandomStringUtils.random(8,"李大爷"));
  15. // 指定随机字符,结果:李李大李大李大大
  16. System.out.println(RandomStringUtils.random(8,'李','大','爷'));
  17. // 下面两个暂时理解不了
  18. System.out.println(RandomStringUtils.random(8,0,66,true,true,'李','大','爷'));
  19. System.out.println(RandomStringUtils.random(
  20. 8,0,66,true,true,new char[]{'李','大','爷'}, new Random()));

static randomAlphabetic() 获取英文随机字符串

  1. // 8位随机,结果:WTMSRAya
  2. System.out.println(RandomStringUtils.randomAlphabetic(8));
  3. // 8~16位随机,结果:fGfFOHkXeDKax
  4. System.out.println(RandomStringUtils.randomAlphabetic(8,16));

static randomAlphanumeric() 获取英文数字随机字符串

  1. // 8位随机,结果:yxufG9xg
  2. System.out.println(RandomStringUtils.randomAlphanumeric(8));
  3. // 8~16位随机,结果:EgzzXIlG5uN
  4. System.out.println(RandomStringUtils.randomAlphanumeric(8,16));

static randomAscii() 获取ascii字符随机字符串

  1. // 8位随机,结果:ol-5lBjP
  2. System.out.println(RandomStringUtils.randomAscii(8));
  3. // 8~16位随机,结果:elVC$hNlfvn[
  4. System.out.println(RandomStringUtils.randomAscii(8,16));

static randomGraph() 获取图字符随机字符串

  1. // 8位随机,结果:2>Wc/zZB
  2. System.out.println(RandomStringUtils.randomGraph(8));
  3. // 8~16位随机,结果:IY|DhGN4OIUJk7{
  4. System.out.println(RandomStringUtils.randomGraph(8,16));

static randomNumeric() 获取数字符随机字符串

  1. // 8位随机,结果:63206456
  2. System.out.println(RandomStringUtils.randomNumeric(8));
  3. // 8~16位随机,结果:50372174320332
  4. System.out.println(RandomStringUtils.randomNumeric(8,16));

static randomPrint() 获取打印字符随机字符串

  1. // 8位随机,结果:c`Nl!"Zo
  2. System.out.println(RandomStringUtils.randomPrint(8));
  3. // 8~16位随机,结果:WrQpY*VFn#dQU
  4. System.out.println(RandomStringUtils.randomPrint(8,16));

------------------------------------

十九、RandomUtils 随机类辅助工具

------------------------------------

二十、Range

------------------------------------

二十一、RegExUtils 正则工具

------------------------------------

二十二、SerializationUtils 序列化工具

------------------------------------

二十三、StringUtils 字符串工具

static abbreviate() 省略部分字符

  1. // 字符串
  2. String str = "12345678910";
  3. // 包括省虐号在内5个字符(默认省略号占3个字符),结果:12...
  4. System.out.println(StringUtils.abbreviate(str, 5));
  5. // 自定义省略符,结果:123@@
  6. System.out.println(StringUtils.abbreviate(str,"@@",5));
  7. // 前后都省略,结果:...67...
  8. System.out.println(StringUtils.abbreviate(str,5,8));
  9. // 前后都换成自定义省略符,结果:@456@
  10. System.out.println(StringUtils.abbreviate(str,"@",3,5));

static abbreviateMiddle() 省略中间的字符

  1. String str = "12345678910";
  2. // 结果:12@10
  3. System.out.println(StringUtils.abbreviateMiddle(str,"@",5));

static appendIfMissing() 添加后缀

  1. String str = "12345678910";
  2. // 识别是否为5的后缀,不是就添加,结果:123456789105
  3. System.out.println(StringUtils.appendIfMissing(str,"5"));
  4. // 后缀为5和0的都不添加后缀,结果:12345678910
  5. System.out.println(StringUtils.appendIfMissing(str,"5","0"));

static appendIfMissingIgnoreCase() 添加后缀(不分大小写)

  1. String str = "abcdefg";
  2. // 结果:abcdefg
  3. System.out.println(StringUtils.appendIfMissingIgnoreCase(str,"G"));

static capitalize() 首字母大写

static uncapitalize() 首字母小写

static center() 内容补全

  1. String str = "abcdefg";
  2. // 默认空格补全,结果: abcdefg
  3. System.out.println(StringUtils.center(str,10));
  4. // 自定义补全内容,结果:@abcdefg@@
  5. System.out.println(StringUtils.center(str,10,'@'));

static chomp() 清除末尾的换行符

static chop() 删除最后一个字符

static compare() 比较大小

  1. String str1 = "102";
  2. String str2 = "11";
  3. String str3 = null;
  4. // 102 < 11,结果:-1
  5. System.out.println(StringUtils.compare(str1,str2));
  6. // 11 > null,结果:1
  7. System.out.println(StringUtils.compare(str2,str3));
  8. // 11 < null,结果:-1
  9. System.out.println(StringUtils.compare(str2,str3,false));

static compareIgnoreCase() 比较大小(不分大小写)

  1. String str1 = "ldy";
  2. String str2 = "ldY";
  3. String str3 = null;
  4. // ldy == ldY,结果:0
  5. System.out.println(StringUtils.compareIgnoreCase(str1,str2));
  6. // ldY > null,结果:1
  7. System.out.println(StringUtils.compareIgnoreCase(str2,str3));
  8. // ldY < null,结果:-1
  9. System.out.println(StringUtils.compareIgnoreCase(str2,str3,false));

static contains() 字符是否包含在字符串内

  1. String str1 = "abcdefghijklmnopq";
  2. // 包含字符串,结果:true
  3. System.out.println(StringUtils.contains(str1,"lm"));
  4. // 包含字符,结果:true
  5. System.out.println(StringUtils.contains(str1,'l'));

static containsAny() 字符是否包含在字符串内(多选)

  1. String str1 = "abcdefghijklmnopq";
  2. // 包含字符串,结果:true
  3. System.out.println(StringUtils. containsAny(str1,"lm","yz"));
  4. // 包含字符,结果:true
  5. System.out.println(StringUtils. containsAny(str1,'l','z'));

static containsIgnoreCase() 字符是否包含在字符串内(不分大小写)

  1. String str1 = "abcdefghijklmnopq";
  2. // 包含字符串,结果:true
  3. System.out.println(StringUtils. containsIgnoreCase(str1,"Lm"));

static containsNone() 字符是否包含在字符串内(空参数为真)

  1. String str1 = "abcdefghijklmnopq";
  2. String str = null;
  3. // 结果:true
  4. System.out.println(StringUtils.containsNone(null,"ze"));
  5. // 结果:true
  6. System.out.println(StringUtils.containsNone(str1,str));

static containsOnly() 字符串的字符仅包含在一个字符集中

  1. String str1 = "acbab";
  2. // 包含多个字符,结果:true
  3. System.out.println(StringUtils.containsOnly(str1,'a','b','c','d'));
  4. // 包含字符串中某个字符,结果:true
  5. System.out.println(StringUtils.containsOnly(str1,"abcdefghijklmnopq"));

static containsWhitespace() 字符串中是否包含空白符

  1. // 结果:true
  2. System.out.println(StringUtils.containsWhitespace("acb\r\nab"));
  3. // 结果:true
  4. System.out.println(StringUtils.containsWhitespace("acb ab"));

static countMatches() 字符在字符串中出现的次数

  1. String str = "abafkoipeamfzcvvjasdcmwerfgko";
  2. // 结果:2
  3. System.out.println(StringUtils.countMatches(str,"ko"));
  4. // 结果:3
  5. System.out.println(StringUtils.countMatches(str,'f'));

static defaultIfBlank() 字符串默认值(null|""|" ")

  1. String defaultStr = "李大爷";
  2. // 结果:abc
  3. System.out.println(StringUtils.defaultIfBlank("abc",defaultStr));
  4. // 结果:李大爷
  5. System.out.println(StringUtils.defaultIfBlank("",defaultStr));
  6. // 结果:李大爷
  7. System.out.println(StringUtils.defaultIfBlank(" ",defaultStr));
  8. // 结果:李大爷
  9. System.out.println(StringUtils.defaultIfBlank(null,defaultStr));

static defaultIfEmpty() 字符串默认值(null|"")

  1. String defaultStr = "李大爷";
  2. // 结果:abc
  3. System.out.println(StringUtils.defaultIfEmpty("abc",defaultStr));
  4. // 结果:李大爷
  5. System.out.println(StringUtils.defaultIfEmpty("",defaultStr));
  6. // 结果:
  7. System.out.println(StringUtils.defaultIfEmpty(" ",defaultStr));
  8. // 结果:李大爷
  9. System.out.println(StringUtils.defaultIfEmpty(null,defaultStr));

static defaultString() 字符串默认值(null)

  1. // 结果:
  2. System.out.println(StringUtils.defaultString(null));
  3. // 结果:李大爷
  4. System.out.println(StringUtils.defaultString(null,"李大爷"));

static deleteWhitespace() 清除字符串中所有空白

  1. String str = "李 大\r\n爷";
  2. // 结果:李大爷
  3. System.out.println(StringUtils.deleteWhitespace(str));

static difference() 字符串比较取不同

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. String str2 = "adwsgergkwfgsfdnerdsf";
  3. // 结果:wfgsfdnerdsf
  4. System.out.println(StringUtils.difference(str1,str2));

static startsWith() 匹配前缀

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. // 结果:true
  3. System.out.println(StringUtils.startsWith(str1,"adw"));

static startsWithAny() 匹配前缀 (多选)

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. // 结果:true
  3. System.out.println(StringUtils.startsWithAny(str1,"adw","dsf"));

static startsWithIgnoreCase() 匹配前缀 (部分大小写)

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. // 结果:true
  3. System.out.println(StringUtils.startsWithIgnoreCase(str1,"aDW"));

static endsWith() 匹配后缀

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. // 结果:true
  3. System.out.println(StringUtils.endsWith(str1,"dsf"));

static endsWithAny() 匹配后缀(多选)

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. // 结果:true
  3. System.out.println(StringUtils.endsWithAny(str1,"rtg","dsf"));

static endsWithIgnoreCase() 匹配后缀(不分大小写)

  1. String str1 = "adwsgergkljasfdnerdsf";
  2. // 结果:true
  3. System.out.println(StringUtils.endsWithIgnoreCase(str1,"Dsf"));

static equals() 字符串比较

  1. String str1 = "abc";
  2. String str2 = "ABC";
  3. // 结果:false
  4. System.out.println(StringUtils.equals(str1,str2));

static equalsIgnoreCase() 字符串比较(不区分大小写)

  1. String str1 = "abc";
  2. String str2 = "ABC";
  3. // 结果:true
  4. System.out.println(StringUtils.equalsIgnoreCase(str1,str2));

static equalsAny() 字符串比较(多选)

  1. String str1 = "abc";
  2. String str2 = "acb";
  3. String str3 = "abd";
  4. String str4 = "abc";
  5. // 结果:true
  6. System.out.println(StringUtils.equalsAny(str1,str2,str3,str4));

static equalsAnyIgnoreCase() 字符串比较(多选|不区分大小写)

  1. String str1 = "abc";
  2. String str2 = "abd";
  3. String str3 = "ABC";
  4. // 结果:true
  5. System.out.println(StringUtils.equalsAnyIgnoreCase(str1,str2,str3));

static firstNonBlank() 区数字第一个有效值(""|" "|null)

  1. String[] strs = {"","\r\n"," ",null,"李大爷"};
  2. // 结果:李大爷
  3. System.out.println(StringUtils.firstNonBlank(strs));

static firstNonEmpty() 区数字第一个有效值(""|null)

  1. String[] strs1 = {"","李大爷"};
  2. String[] strs2 = {"\r\n","李大爷"};
  3. String[] strs3 = {" ","李大爷"};
  4. String[] strs4 = {null,"李大爷"};
  5. // 结果:李大爷
  6. System.out.println(StringUtils.firstNonEmpty(strs1));
  7. // 结果:\r\n
  8. System.out.println(StringUtils.firstNonEmpty(strs2));
  9. // 结果:
  10. System.out.println(StringUtils.firstNonEmpty(strs3));
  11. // 结果:李大爷
  12. System.out.println(StringUtils.firstNonEmpty(strs4));

static getCommonPrefix() 取字符串数组中公共的前缀‘

  1. String[] strs = {"李大爷","李先生"};
  2. // 结果:李
  3. System.out.println(StringUtils.getCommonPrefix(strs));

static getDigits() 取出字符串中的数字

  1. String str = "as1l31dwer4f52sdf0";
  2. // 结果:1314520
  3. System.out.println(StringUtils.getDigits(str));

static getFuzzyDistance() (弃用)

static getJaroWinklerDistance() (弃用)

static getLevenshteinDistance() (弃用)

static indexOf() 取字符在字符串中第一次的位置

  1. String str = "as1l31dwer4f52sdf0";
  2. // 结果:6
  3. System.out.println(StringUtils.indexOf(str,"dwer"));
  4. // 从第4个字符开始,但是字符串是null,结果:-1
  5. System.out.println(StringUtils.indexOf(null,'d',3));

static indexOfIgnoreCase() 取字符在字符串中第一次的位置(不分大小写)

  1. String str = "as1l31dwer4f52sdf0";
  2. // 结果:6
  3. System.out.println(StringUtils.indexOfIgnoreCase(str,"DwEr"));
  4. // 从第4个字符开始,但是字符串是null,结果:-1
  5. System.out.println(StringUtils.indexOfIgnoreCase(null,"D",3));

static indexOfAny() 字符在字符串中第一次的位置(多选)

  1. String str = "as1l31dwer4f52sdf0";
  2. // 匹配出最靠前的结果,结果:4
  3. System.out.println(StringUtils.indexOfAny(str,"dwer",null,"31d"));

static indexOfAnyBut() 字符串中第一个不在匹配范围内的字符位置

  1. String str = "as1l31dwer4f52sdf0";
  2. // 结果:2
  3. System.out.println(StringUtils.indexOfAnyBut(str,"als"));
  4. // 结果:2
  5. System.out.println(StringUtils.indexOfAnyBut(str,'a','l','s'));

static indexOfDifference() 比较字符串区第一个不同的位置

  1. String str1 = "abcde";
  2. String str2 = "abcce";
  3. String str3 = "abdde";
  4. // 结果:2
  5. System.out.println(StringUtils.indexOfDifference(str1,str2,str3));

static isAllBlank() 字符串序列是否都为空(""|" "|null)

  1. String str = " a b c ";
  2. // 结果:true
  3. System.out.println(StringUtils.isAllBlank(""," ",null,"\r\n"));
  4. // 结果:false
  5. System.out.println(StringUtils.isAllBlank(""," ",null,"\r\n",str));

static isAllEmpty() 字符串序列是否都为空(""|null)

  1. System.out.println(StringUtils.isAllEmpty("",null));
  2. System.out.println(StringUtils.isAllEmpty(""," ",null));

static isAllLowerCase() 是否只包含小写字母

  1. String str = "a bc";
  2. // 结果:false
  3. System.out.println(StringUtils.isAllLowerCase(str));

static isAllUpperCase() 是否只包含大写字母

  1. String str = "AAB";
  2. // 结果:true
  3. System.out.println(StringUtils.isAllUpperCase(str));

static isAlpha() 是否只包含Unicode(各国语言不含符号和数字)

  1. String str = "李1";
  2. // 结果:false
  3. System.out.println(StringUtils.isAlpha(str));

static isAsciiPrintable() 是否只包含ASCII(英文字母|英文符号|数字)

  1. String str1 = "李大爷";
  2. // 结果:false
  3. System.out.println(StringUtils.isAsciiPrintable(str1));

static isAlphanumeric() 是否只包含(Unicode|数字)

  1. String str = "李1";
  2. // 结果:true
  3. System.out.println(StringUtils.isAlphanumeric(str));

static isAlphaSpace() 是否只包含(Unicode|' ')

  1. String str = "李 ";
  2. System.out.println(StringUtils.isAlphaSpace(str));

static isAlphanumericSpace() 是否只包含(Unicode|数字|' ')

  1. String str = "李 1";
  2. // 结果:true
  3. System.out.println(StringUtils.isAlphanumericSpace(str));

static isBlank() 是否为(null|""|" ")

  1. String str1 = " ";
  2. // 结果:true
  3. System.out.println(StringUtils.isBlank(str1));

static isNoneBlank() 是否不为(null|""|" ")

  1. String str1 = " ";
  2. // 结果:false
  3. System.out.println(StringUtils.isNoneBlank(str1));

static isAnyBlank() 是否包含(null|""|" ")

  1. String str1 = "李 ";
  2. String str2 = " ";
  3. String str3 = "";
  4. String str4 = null;
  5. String str5 = "\r\n";
  6. // 结果:true
  7. System.out.println(StringUtils.isAnyBlank(str1,str2,str3,str4,str5));
  8. // 结果:false
  9. System.out.println(StringUtils.isAnyBlank(str1));

static isEmpty() 是否为(null|"")

  1. String str1 = " ";
  2. // 结果:false
  3. System.out.println(StringUtils.isEmpty(str1));

static isNotEmpty() 是否不为(null|"")

  1. String str1 = " ";
  2. // 结果:true
  3. System.out.println(StringUtils.isNotEmpty(str1));

static isAnyEmpty() 是否包含(null|"")

  1. String str1 = "李 ";
  2. String str2 = " ";
  3. String str3 = "";
  4. String str4 = null;
  5. String str5 = "\r\n";
  6. // 结果:true
  7. System.out.println(StringUtils.isAnyEmpty(str1,str2,str3,str4,str5));
  8. // 结果:false
  9. System.out.println(StringUtils.isAnyEmpty(str1,str2,str5));

static isMixedCase() 是否包含大小写混合字符

  1. // 结果:true
  2. System.out.println(StringUtils.isMixedCase("李大爷lDy"));

static isNumeric() 是否只包含数字

  1. String str = "123456";
  2. // 结果:true
  3. System.out.println(StringUtils.isNumeric(str));

static isNumericSpace() 是否只包含(数字|" ")

  1. String str = "12 34 56";
  2. // 结果:true
  3. System.out.println(StringUtils.isNumericSpace(str));

static isWhitespace() 是否只包含(""|" ")

  1. // 结果:ture
  2. System.out.println(StringUtils.isWhitespace(""));
  3. // 结果:ture
  4. System.out.println(StringUtils.isWhitespace(" "));
  5. // 结果:ture
  6. System.out.println(StringUtils.isWhitespace("\r\n"));
  7. // 结果:false
  8. System.out.println(StringUtils.isWhitespace(null));

static join() 数组拼接字符串

  1. String[] strs = new String[]{"李大爷","是","个","学","霸"};
  2. // 结果:123
  3. System.out.println(StringUtils.join('1','2','3'));
  4. // 结果:李大爷,是,个,学,霸
  5. System.out.println(StringUtils.join(strs,','));
  6. // 结果:是~!个~!学~!霸
  7. System.out.println(StringUtils.join(Arrays.asList(strs),"~!",1,strs.length));

static joinWith() 数组拼接字符串

  1. String[] strs = new String[]{"李大爷","是","个","学","霸"};
  2. // 结果:李大爷~!是~!个~!学~!霸
  3. System.out.println(StringUtils.joinWith("~!",strs));

static lastIndexOf() 字符在字符串中最后出现的位置

  1. String str = "李大爷是个大学霸";
  2. // 结果:1
  3. System.out.println(StringUtils.lastIndexOf(str,"大爷"));
  4. // 结果:5
  5. System.out.println(StringUtils.lastIndexOf(str,'大'));
  6. // 结果:1
  7. System.out.println(StringUtils.lastIndexOf(str,'大',3));
  8. // 结果:-1
  9. System.out.println(StringUtils.lastIndexOf(str,null));

static lastIndexOfAny() 字符在字符串中最后出现的位置(多选)

  1. String str = "李大爷是个大学霸";
  2. // 识别位置最大的一个,结果:5
  3. System.out.println(StringUtils.lastIndexOfAny(str,"大爷","大",null));

static lastIndexOfIgnoreCase() 字符在字符串中最后出现的位置(不分大小写)

  1. String str = "李大爷A是个大学霸a";
  2. // 结果:9
  3. System.out.println(StringUtils.lastIndexOfIgnoreCase(str,"A"));
  4. // 结果:3
  5. System.out.println(StringUtils.lastIndexOfIgnoreCase(str,"A",5));

static lastOrdinalIndexOf() 字符在字符串倒数第几个出现的位置

  1. String str = "李大爷A是个大学霸a";
  2. // 第一个A的位置,结果:3
  3. System.out.println(StringUtils.lastOrdinalIndexOf(str,"A",1));

static left() 从字符串开头截取多个字符

  1. String str = "李大爷是个大学霸";
  2. // 结果:李大爷是个
  3. System.out.println(StringUtils.left(str,5));

static leftPad() 字符串开头填充

  1. String str = "李大爷";
  2. // 空格填充,结果: 李大爷
  3. System.out.println(StringUtils.leftPad(str,5));
  4. // 预定义字符填充,结果:@@李大爷
  5. System.out.println(StringUtils.leftPad(str,5,'@'));
  6. // 预定义字符串填充,结果:12李大爷
  7. System.out.println(StringUtils.leftPad(str,5,"123456"));

static right() 从字符串末尾截取多个字符

  1. String str = "abcacb";
  2. // 取字符串后四位,结果:cacb
  3. System.out.println(StringUtils.right(str,4));

static rightPad() 字符串末尾填充

  1. String str = "abcacb";
  2. // 超出规定位数右边用*填充,结果:abcacb**
  3. System.out.println(StringUtils.rightPad(str,8,'*'));

static length() 获取字符串长度

  1. // 结果:3
  2. System.out.println(StringUtils.length("李大爷"));
  3. // 结果:0
  4. System.out.println(StringUtils.length(null));

static lowerCase() 全部转小写

  1. // 结果:string
  2. System.out.println(StringUtils.lowerCase("StRiNg"));
  3. // 设置区域不知道有什么用,结果:string
  4. System.out.println(StringUtils.lowerCase("StRiNg",Locale.getDefault()));

static upperCase() 全部转大写

  1. // 结果:STRING
  2. System.out.println(StringUtils.upperCase("StRiNg"));
  3. // 结果:STRING
  4. System.out.println(StringUtils.upperCase("StRiNg",Locale.getDefault()));

static mid() 字符串某个位置向后截取多个

  1. // 截取数量超过字符串长度,按字符串长度截取,结果:RiNg
  2. System.out.println(StringUtils.mid("StRiNg",2,10));

static normalizeSpace()

static ordinalIndexOf() 字符在字符串第几个出现的位置

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:5
  3. System.out.println(StringUtils.ordinalIndexOf(str,"a",2));

static overlay() 字符串覆盖字符串的一部分

  1. String str = "adewtasfcxcgbwefaf";
  2. String overlay = "李大爷";
  3. // 覆盖3-10的内容,结果:ade李大爷cgbwefaf
  4. System.out.println(StringUtils.overlay(str,overlay,3,10));

static prependIfMissing() 添加前缀

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:0_adewtasfcxcgbwefaf
  3. System.out.println(StringUtils.prependIfMissing(str,"0_"));
  4. // 结果:adewtasfcxcgbwefaf
  5. System.out.println(StringUtils.prependIfMissing(str,"0_","we","ad"));

static prependIfMissingIgnoreCase() 添加前缀(不分大小写)

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:0_adewtasfcxcgbwefaf
  3. System.out.println(StringUtils.prependIfMissingIgnoreCase(str,"0_"));
  4. // 结果:adewtasfcxcgbwefaf
  5. System.out.println(StringUtils.prependIfMissingIgnoreCase(str,"0_","we","AD"));

static remove() 删除部分字符

  1. String str = "abcabc";
  2. // 结果:bcbc
  3. System.out.println(StringUtils.remove(str,'a'));
  4. // 结果:aa
  5. System.out.println(StringUtils.remove(str,"bc"));

static removeIgnoreCase() 删除部分字符(不分大小写)

  1. String str = "abcabc";
  2. // 结果:acac
  3. System.out.println(StringUtils.removeIgnoreCase(str,"B"));

static removeEnd() 删除后缀

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:adewtasfcxcgbwe
  3. System.out.println(StringUtils.removeEnd(str,"faf"));

static removeEndIgnoreCase() 删除后缀(不分大小写)

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:adewtasfcxcgbwe
  3. System.out.println(StringUtils.removeIgnoreCase(str,"FAF"));

static removeStart() 删除前缀

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:tasfcxcgbwefaf
  3. System.out.println(StringUtils.removeStart(str,"adew"));

static removeStartIgnoreCase() 删除前缀(不分大小写)

  1. String str = "adewtasfcxcgbwefaf";
  2. // 结果:wtasfcxcgbwefaf
  3. System.out.println(StringUtils.removeStartIgnoreCase(str,"ADE"));

static repeat() 字符串重复

  1. String str = "李大爷";
  2. // 重复两次,结果:李大爷李大爷
  3. System.out.println(StringUtils.repeat(str,2));
  4. // 复制三次,&分隔,结果:李大爷&李大爷&李大爷
  5. System.out.println(StringUtils.repeat(str,"&",3));

static replace() 字符串替换

  1. String str = "abcacb";
  2. // 把a全部替换成e,结果:ebcecb
  3. System.out.println(StringUtils.replace(str, "a", "e"));
  4. // 把a全部替换成e最多替换1个,结果:ebcacb
  5. System.out.println(StringUtils.replace(str, "a", "e",1));

static replaceIgnoreCase() 字符串替换(不分大小写)

  1. String str = "abcacb";
  2. // 把a或A替换成g,结果:gbcgcb
  3. System.out.println(StringUtils.replaceIgnoreCase(str, "A", "g"));
  4. // 把a或A替换成g,只替换1个,结果:gbcacb
  5. System.out.println(StringUtils.replaceIgnoreCase(str, "A", "g",1));

static replaceOnce() 字符串替换(只替换一个)

  1. String str = "abcacb";
  2. // 把第一个a替换成g,结果:gbcacb
  3. System.out.println(StringUtils.replaceOnce(str, "a", "g"));

static replaceOnceIgnoreCase() 字符串替换(只替换一个不分大小写)

  1. String str = "abcacb";
  2. // 把第一个a或A替换成g,结果:gbcacb
  3. System.out.println(StringUtils.replaceOnceIgnoreCase(str, "A", "g"));

static replaceChars() 字符串替换(支持char类型参数)

  1. String str = "abcacb";
  2. // 把a全部替换成e,结果:ebcecb
  3. System.out.println(StringUtils.replaceChars(str, "a", "e"));
  4. // 把b全部替换成f,结果:afcacf
  5. System.out.println(StringUtils.replaceChars(str, 'b','f'));

static replaceEach() 批量字符串替换

  1. String str = "abcacb";
  2. // 把a,b全部替换成e,f,结果:efcecf
  3. System.out.println(StringUtils.replaceEach(str, new String[]{"a","b"}, new String[]{"e","f"}));

static replaceEachRepeatedly() 批量字符串反复替换

  1. String str = "abcacb";
  2. // 把a替换成e,再把e替换成f,结果:fbcfcb
  3. System.out.println(StringUtils.replaceEachRepeatedly(str, new String[]{"e","a"}, new String[]{"f","e"}));

static reverse() 字符串反转

  1. // 结果:爷大李
  2. System.out.println(StringUtils.reverse("李大爷"));

static reverseDelimited() 根据指定字符反转字符串

  1. // 结果:大爷,李
  2. System.out.println(StringUtils.reverseDelimited("李,大爷",','));

static rotate() 字符串位移

  1. String str = "abcacb";
  2. // 向右位移两位,结果:cbabca
  3. System.out.println(StringUtils.rotate(str,2));

static split() 字符串拆分成数组

  1. String str = "ab,,ca c,b";
  2. // 默认以空格拆分,结果:{"ab,,ca","c,b"}
  3. System.out.println(Arrays.asList(StringUtils.split(str)));
  4. // 以逗号拆分,结果:{"ab","ca c","b"}
  5. System.out.println(Arrays.asList(StringUtils.split(str,',')));
  6. // 以逗号拆分,最多拆分两份,结果:{"ab","ca c,b"}
  7. System.out.println(Arrays.asList(StringUtils.split(str,",",2)));

static splitPreserveAllTokens() 字符串拆分成数组(识别相邻分隔符)

  1. String str = "ab,,ca c,b";
  2. // 默认以空格拆分,结果:{"ab,,ca","c,b"}
  3. System.out.println(Arrays.asList(StringUtils.splitPreserveAllTokens(str)));
  4. // 以逗号拆分,结果:{"ab","","ca c","b"}
  5. System.out.println(Arrays.asList(StringUtils.splitPreserveAllTokens(str,',')));
  6. // 以逗号拆分,最多拆分两份,结果:{"ab",",ca c,b"}
  7. System.out.println(Arrays.asList(StringUtils.splitPreserveAllTokens(str,",",2)));

static splitByCharacterType() 字符根据字符类型串拆分成数组

  1. String str = "aB,李大爷ca c,b";
  2. // 结果:{"a","B",",","李大爷","ca"," ","c",",","b"}
  3. System.out.println(Arrays.asList(StringUtils.splitByCharacterType(str)));

static splitByCharacterTypeCamelCase() 字符串根据类型和驼峰拆分成数组

  1. String str = "HellowWorld";
  2. // 结果:{"Hellow","World"}
  3. System.out.println(Arrays.asList(StringUtils.splitByCharacterTypeCamelCase(str)));

static splitByWholeSeparator() 字符串根据指定字符串拆分

  1. // 存在分隔符相邻的情况
  2. String str = "ab,,ca c,b";
  3. // 以","拆分,结果:{"ab","ca c","b"}
  4. System.out.println(Arrays.asList(StringUtils.splitByWholeSeparator(str,",")));
  5. // 以","拆分,最多拆分两份,结果:{"ab","ca c,b"}
  6. System.out.println(Arrays.asList(StringUtils.splitByWholeSeparator(str,",",2))

statuc splitByWholeSeparatorPreserveAllTokens() 字符串根据指定字符串拆分(识别相邻分隔符)

  1. // 存在分隔符相邻的情况
  2. String str = "ab,,ca c,b";
  3. // 以","拆分,结果:{"ab","","ca c","b"}
  4. System.out.println(Arrays.asList(StringUtils.splitByWholeSeparatorPreserveAllTokens(str,",")));
  5. // 以","拆分,最多拆分两份,结果:{"ab",",ca c,b"}
  6. System.out.println(Arrays.asList(StringUtils.splitByWholeSeparatorPreserveAllTokens(str,",",2)));

static strip() 去除头尾空白符

  1. tring str = "\r\n 李大爷 ";
  2. // 去除空白符,结果:李大爷
  3. System.out.println(StringUtils.strip(str));
  4. // 去除"大爷 ",结果:\r\n 李
  5. System.out.println(StringUtils.strip(str,"大爷 "));

static stripToEmpty() 去除头尾空白符(只去除空白符)

  1. // 结果:""
  2. System.out.println(StringUtils.stripToEmpty(null));
  3. // 结果:李大爷
  4. System.out.println(StringUtils.stripToEmpty("\r\n 李大爷 "));

static stripToNull() 去除头尾空白符(只去除空白符)

  1. // 结果:null
  2. System.out.println(StringUtils.stripToNull(""));
  3. // 结果:李大爷
  4. System.out.println(StringUtils.stripToNull("\r\n 李大爷 "));

static stripAll() 去除头尾空白符(多个)

  1. String[] strs = {"李\r\n", "大 ", "\r\n爷"};
  2. // 清楚数组中所有字符串首尾的空白符,结果:{"李","大","爷"}
  3. System.out.println(Arrays.asList(StringUtils.stripAll(strs)));
  4. // 清楚多个字符串首位的空白符,结果:{"李","大","爷"}
  5. System.out.println(Arrays.asList(StringUtils.stripAll("李\r\n", "大 ", "\r\n爷")));

static stripEnd() 去除指定后缀

  1. // 结果:李
  2. System.out.println(StringUtils.stripEnd("李大爷","大爷"));

static stripStart() 去除指定前缀

  1. // 结果:大爷
  2. System.out.println(StringUtils.stripStart("李大爷","李"));

static stripAccents() 去除字符串中的变音符号

  1. String str = "áü";
  2. // 结果:au
  3. System.out.println(StringUtils.stripAccents(str));

static substring() 字符串截取

  1. String str = "李大爷";
  2. // 结果:爷
  3. System.out.println(StringUtils.substring(str,2));
  4. // 结果:爷
  5. System.out.println(StringUtils.substring(str,2,5));
  6. // 结果:null
  7. System.out.println(StringUtils.substring(null,2,5));

static substringAfter() 截取指定字符串后的字符

  1. String str = "李大爷";
  2. // 结果:爷
  3. System.out.println(StringUtils.substringAfter(str,"大"));
  4. // 结果:""
  5. System.out.println(StringUtils.substringAfter(str,"牛逼"));

static substringAfterLast() 截取指定字符串最后出现位置后的字符

  1. // 结果:牛逼
  2. System.out.println(StringUtils.substringAfterLast("李大爷李牛逼","李"));

static substringBefore() 截取指定字符串钱的字符

  1. String str = "李大爷";
  2. // 结果:李
  3. System.out.println(StringUtils.substringBefore(str,"大"));
  4. // 结果:""
  5. System.out.println(StringUtils.substringBefore(str,"牛逼"));

static substringBeforeLast() 截取指定字符串最后出现位置后的字符

  1. // 结果:李大爷
  2. System.out.println(StringUtils.substringBeforeLast("李大爷李牛逼","李"));

static substringBetween() 截取两个指定字符串之间的字符

  1. String str = "李大爷李牛逼";
  2. // 结果:大爷
  3. System.out.println(StringUtils.substringBetween(str,"李"));
  4. // 结果:大爷李
  5. System.out.println(StringUtils.substringBetween(str,"李","牛逼"));

static substringsBetween() 截取两个指定字符串之间的字符(多个结果)

  1. String str = "李大爷李小爷";
  2. // 结果:{"大","小"}
  3. System.out.println(Arrays.asList(StringUtils.substringsBetween(str,"李","爷")));

static swapCase() 切换大小写

  1. // 结果:lIDAYE
  2. System.out.println(StringUtils.swapCase("Lidaye"));

static toCodePoints() 字符串转代码点

  1. int[] lidayes = StringUtils.toCodePoints("Lidaye");
  2. // 结果:76,105,100,97,121,101,
  3. for (int lidaye : lidayes) {
  4. System.out.println(lidaye);
  5. }

static toEncodedString() 字节转字符串

  1. String str = "李大爷";
  2. // 转字节
  3. byte[] bytes = str.getBytes();
  4. // 转字符,结果:李大爷
  5. System.out.println(StringUtils.toEncodedString(bytes, Charset.defaultCharset()));

static trim() 去除首位控制字符(char <= 32)

  1. String str = " 李大爷 \r\n";
  2. // 结果:李大爷
  3. System.out.println(StringUtils.trim(str));
  4. // 结果:null
  5. System.out.println(StringUtils.trim(null));

static trimToEmpty() 去除首位控制字符(char <= 32)

  1. // 结果:李大爷
  2. System.out.println(StringUtils.trimToEmpty(" 李大爷 \r\n"));
  3. // 结果:""
  4. System.out.println(StringUtils.trimToEmpty(null));

static trimToNull() 去除首位控制字符(char <= 32)

  1. // 结果:李大爷
  2. System.out.println(StringUtils.trimToNull(" 李大爷 \r\n"));
  3. // 结果:null
  4. System.out.println(StringUtils.trimToNull(" "));

static truncate() 裁减字符串

  1. String str = "李大爷";
  2. // 最多保留两位长度,结果:李大
  3. System.out.println(StringUtils.truncate(str,2));
  4. // 最多保留两位长度,第二个字符开始,结果:大爷
  5. System.out.println(StringUtils.truncate(str,1,2));

static unwrap() 清除指定一致的前后缀

  1. // 结果:大爷
  2. System.out.println(StringUtils.unwrap("李大爷李","李"));

static wrap() 添加同样的前后缀

  1. String str = "大爷";
  2. // 结果:李大爷李
  3. System.out.println(StringUtils.wrap(str,'李'));
  4. // 结果:李大爷李
  5. System.out.println(StringUtils.wrap(str,"李"));

static wrapIfMissing() 添加同样的前后缀(不重复添加)

  1. String str = "李大爷";
  2. // 结果:李大爷李
  3. System.out.println(StringUtils.wrapIfMissing(str,'李'));
  4. // 结果:李大爷李
  5. System.out.println(StringUtils.wrapIfMissing(str,"李"));

------------------------------------

二十四、SystemUtils 系统工具

static getEnvironmentVariable() 取环境变量并设置备用值

  1. // 结果:D:\tool\java\jdk\jdk1.8
  2. System.out.println(SystemUtils.getEnvironmentVariable("JAVA_HOME", "李大爷"));
  3. // 结果:李大爷
  4. System.out.println(SystemUtils.getEnvironmentVariable("LIDAYE_HOME", "李大爷"));

static getHostName() 获取主机名

  1. // 结果:SD-20191104SIHE
  2. System.out.println(SystemUtils.getHostName());

static getJavaHome() 获取 JAVA_HOME

  1. // 结果:D:\tool\java\jdk\jdk1.8
  2. System.out.println(SystemUtils.getJavaHome());

static getJavaIoTmpDir() 获取 java IO 的临时文件目录

  1. // 结果:C:\Users\ADMINI~1\AppData\Local\Temp
  2. System.out.println(SystemUtils.getJavaIoTmpDir());

static getUserDir() 获取当前项目所在目录

  1. // 结果:D:\tool\project\demo2
  2. System.out.println(SystemUtils.getUserDir());

static getUserHome() 获取用户主目录

  1. // 结果:C:\Users\Administrator
  2. System.out.println(SystemUtils.getUserHome());

static isJavaAwtHeadless() 是否开启Headless

  1. // false
  2. System.out.println(SystemUtils.isJavaAwtHeadless());

static isJavaVersionAtLeast() java 版本

  1. // 以下结果都为:true
  2. System.out.println(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_8));
  3. System.out.println(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_7));
  4. System.out.println(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_6));
  5. System.out.println(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_5));

static isJavaVersionAtMost() 包中没有该方法

------------------------------------

二十五、ThreadUtils 线程工具

------------------------------------

二十六、Validate 参数校验工具

static exclusiveBetween() 校验参数的取值范围

  1. // 模拟传入参数
  2. long time = System.currentTimeMillis();
  3. double price = 0.5;
  4. String str = "D";
  5. Validate.exclusiveBetween("A","Z",str);
  6. Validate.exclusiveBetween(0,1,price);
  7. // 报错!
  8. // The value 1583140578428 is not in the specified exclusive range of 1583140578423 to 1583140578426
  9. Validate.exclusiveBetween(time-5,time-2,time);

static inclusiveBetween() 校验参数的取值范围

static finite() 过滤无限和NAN

  1. double price1 = 1.0 / 0.0;
  2. double price2 = price1 * 0.0;
  3. // 结果:Infinity
  4. System.out.println(price1);
  5. // 结果:NaN
  6. System.out.println(price2);
  7. // 报错!
  8. // price1=Infinity 异常提示
  9. Validate.finite(price1,"price1=%s 异常提示",price1);

static isAssignableFrom() 两个类是否相同或所属

  1. Integer num = 0;
  2. List list = new ArrayList();
  3. // 父类/父接口在前,子类在后
  4. Validate.isAssignableFrom(Comparable.class,num.getClass());
  5. // 报错!
  6. Validate.isAssignableFrom(Map.class,list.getClass());

static isInstanceOf() 对象是否为类的实例

  1. Integer num = 0;
  2. List list = new ArrayList();
  3. Validate.isInstanceOf(Comparable.class,num);
  4. Validate.isInstanceOf(Map.class,list);

static isTrue() 条件是否为真

  1. Validate.isTrue(true);
  2. // 报错!抛出异常啦啦啦啦~
  3. Validate.isTrue(false,"抛出异常%s","啦啦啦啦);
  4. // 报错!抛出异常1
  5. Validate.isTrue(false,"抛出异常%s",1);
  6. // 报错!抛出异常1.0
  7. Validate.isTrue(false,"抛出异常%s",1.0);

static matchesPattern() 正则校验字符串

  1. String num = "1234567";
  2. Validate.matchesPattern(num,"\\d{7}$","%s不是7位数字",num);

static noNullElements() 校验数组中是否有空值

  1. String[] param1 = {"李","大","爷"};
  2. // 测试map数组的空判断是否生效
  3. Map<String, String> param2 = new HashMap<>(3);
  4. param2.put("li","李");
  5. param2.put("da",null);
  6. param2.put("ye","爷");
  7. // 都没有报错
  8. Validate.noNullElements(param1);
  9. Validate.noNullElements(Arrays.asList(param1));
  10. Validate.noNullElements(ArrayUtils.toArray(param2));

static notBlank() 字符串序非空校验(\r\m | " ")

  1. StringBuilder param1 = new StringBuilder("李大爷");
  2. StringBuffer param2 = new StringBuffer("\r\n");
  3. StringBuffer param3 = new StringBuffer(" ");
  4. Validate.notBlank(param1);
  5. // 报错!param2=\r\n抛出异常
  6. Validate.notBlank(param2,"param2=%s 抛出异常",param2);
  7. // 报错!param3= 抛出异常
  8. Validate.notBlank(param3,"param3=%s 抛出异常",param3);

static notEmpty() 字符串序非空校验

  1. StringBuilder[] param1 = {new StringBuilder("李大爷"),new StringBuilder("李学霸")};
  2. StringBuffer param2 = new StringBuffer("\r\n");
  3. StringBuffer param3 = new StringBuffer(" ");
  4. StringBuffer param4 = new StringBuffer();
  5. Validate.notEmpty(param1);
  6. Validate.notEmpty(param2);
  7. Validate.notEmpty(param3);
  8. // 报错!param4= 抛出异常
  9. Validate.notEmpty(param4,"param4=%s 抛出异常",param4);

static notNaN() 非NaN过滤

  1. double nan = 1.0/0.0*0.0;
  2. // 报错!param1=NaN 抛出异常
  3. Validate.notNaN(nan,"param1=%s 抛出异常",nan);

static notNull() 非null过滤

  1. // 报错!报错啦啦啦啦啦啦
  2. Validate.notNull(null,"报错%s","啦啦啦啦啦啦");

static validIndex() 数组下标有效性校验

  1. String[] strs = {"李",null,"爷"};
  2. List<String> list = new ArrayList<>();
  3. list.add("1");
  4. list.add("2");
  5. Validate.validIndex(strs,1);
  6. // 报错!数组中没有该下标哦哦哦哦哦~
  7. Validate.validIndex(list,2,"数组中没有该下标%s","哦哦哦哦哦~");

static validState() 真假校验

  1. Validate.validState(false,"报错啦~~%s","啊啊啊啊~");

------------------------------------

time 日期时间工具类

常用格式:yyyy-MM-dd HH:mm:ss

一、DateFormatUtils 格式化工具

1. format() 格式化时间

  1. String pattern = "yyyy-MM-dd hh:mm:ss";
  2. // 以下结果都是:2020-03-06 02:53:37
  3. System.out.println(DateFormatUtils.format(Calendar.getInstance(), pattern));
  4. System.out.println(DateFormatUtils.format(new Date(), pattern));
  5. System.out.println(DateFormatUtils.format(System.currentTimeMillis(), pattern));
  6. System.out.println(DateFormatUtils.format(System.currentTimeMillis(), pattern, TimeZone.getDefault()));
  7. System.out.println(DateFormatUtils.format(System.currentTimeMillis(), pattern, Locale.getDefault()));
  8. System.out.println(DateFormatUtils.format(System.currentTimeMillis(), pattern, TimeZone.getDefault(),Locale.getDefault()));

2. formatUTC() UTC时区格式化时间

  1. String pattern = "yyyy-MM-dd hh:mm:ss";
  2. // 以下结果都是:2020-03-06 06:56:40
  3. System.out.println(DateFormatUtils.formatUTC(new Date(), pattern));
  4. System.out.println(DateFormatUtils.formatUTC(System.currentTimeMillis(), pattern));
  5. System.out.println(DateFormatUtils.formatUTC(System.currentTimeMillis(), pattern,Locale.getDefault()));

------------------------------------

二、DateUtils 日期工具

static addMilliseconds() 数毫秒后

  1. // 获取 dataObj 对象向后推1000毫秒后的对象
  2. Date date = DateUtils.addMilliseconds(new Date(), 1000);

static addSeconds() 数秒后

  1. // 获取 dataObj 对象向后推10秒后的对象
  2. Date date = DateUtils.addSeconds(new Date(), 10);

static addMinutes() 数分钟后

  1. // 获取 dataObj 对象向后推5分钟后的对象
  2. Date date = DateUtils.addMinutes(new Date(), 5);

static addHours() 数小时后

  1. // 获取 dataObj 对象向后推3小时后的对象
  2. Date date = DateUtils.addHours(new Date(), 3);

static addDays() 数天后

  1. // 获取 dataObj 对象向后推3天后的对象
  2. Date date = DateUtils.addDays(new Date(), 3);

static addWeeks() 数周后

  1. // 获取 dataObj 对象向后推3周后的对象
  2. Date date = DateUtils.addWeeks(new Date(), 3);

static addMonths() 数月后

  1. // 获取 dataObj 对象向后推3个月后的对象
  2. Date date = DateUtils.addMonths(new Date(), 3);

static addYears() 数年后

  1. // 获取 dataObj 对象向后推1年后的对象
  2. Date date = DateUtils.addYears(dateObj, 1);

static ceiling() 获取日期上限

  1. /**
  2. * 假设当前时间 2019-10-21 10:03:00
  3. * Calendar.AM(0): 0001-01-01 00:00:00
  4. * Calendar.YEAR(1): 2020-01-01 00:00:00
  5. * Calendar.MONTH(2): 2019-11-01 00:00:00
  6. * Calendar.DATE(5): 2019-10-22 00:00:00
  7. * Calendar.AM_PM(9): 2019-10-21 12:00:00
  8. * Calendar.HOUR(10): 2019-10-21 11:00:00
  9. * Calendar.DECEMBER(11): 2019-10-21 11:00:00
  10. * Calendar.MINUTE(12): 2019-10-21 10:04:00
  11. * Calendar.SECOND(13): 2019-10-21 10:03:01
  12. * Calendar.MILLISECOND(14): 2019-10-21 10:03:00
  13. */
  14. Date ceiling = DateUtils.ceiling(new Date(), Calendar.HOUR);

static getFragmentInMilliseconds() 相对的第几毫秒

  1. /**
  2. * 假设当前时间 2019-10-21 10:49:16
  3. * Calendar.YEAR(1): 25354156808
  4. * Calendar.MONTH(2): 1766956809
  5. * Calendar.DATE(5): 38956809
  6. * Calendar.FRIDAY(6): 38956809
  7. * Calendar.DECEMBER(11): 2956809
  8. * Calendar.MINUTE(12): 16809
  9. * Calendar.SECOND(13): 809
  10. */
  11. long millisecond = DateUtils.getFragmentInMilliseconds(new Date(), Calendar.YEAR);

static getFragmentInSeconds() 相对的第几秒

  1. /**
  2. * 假设当前时间 2019-10-21 11:00:29
  3. * Calendar.YEAR(1): 25354830
  4. * Calendar.MONTH(2): 1767630
  5. * Calendar.DATE(5): 39630
  6. * Calendar.FRIDAY(6): 39630
  7. * Calendar.DECEMBER(11): 30
  8. * Calendar.MINUTE(12): 30
  9. */
  10. long second = DateUtils.getFragmentInSeconds(new Date(), Calendar.YEAR);

static getFragmentInMinutes() 相对的第几分钟

  1. /**
  2. * 假设当前时间 2019-10-21 10:57:20
  3. * Calendar.YEAR(1): 422577
  4. * Calendar.MONTH(2): 29457
  5. * Calendar.DATE(5): 657
  6. * Calendar.FRIDAY(6): 657
  7. * Calendar.DECEMBER(11): 57
  8. */
  9. long minute = DateUtils.getFragmentInMinutes(new Date(), Calendar.YEAR);

static getFragmentInHours() 相对的第几个小时

  1. /**
  2. * 假设当前时间 2019-10-21 10:43:13
  3. * Calendar.YEAR(1): 7042
  4. * Calendar.MONTH(2): 490
  5. * Calendar.DATE(5): 10
  6. * Calendar.FRIDAY(6): 10
  7. */
  8. long hour = DateUtils.getFragmentInHours(new Date(), Calendar.YEAR);

static getFragmentInDays() 相对的第几天

  1. /**
  2. * 假设当前时间 2019-10-21 10:03:00
  3. * Calendar.YEAR(1): 294
  4. * Calendar.MONTH(2): 21
  5. */
  6. long day = DateUtils.getFragmentInDays(new Date(), Calendar.MONTH);

static isSameDay() 是否同一天

  1. boolean sameDay = DateUtils.isSameDay(new Date(), new Date());

static isSameInstant() 是否同一毫秒

  1. boolean sameInstant = DateUtils.isSameInstant(new Date(), new Date());

static isSameLocalTime() 是否同一个本地时间

  1. boolean sameInstant = DateUtils.isSameLocalTime(
  2. DateUtils.toCalendar(new Date()),
  3. DateUtils.toCalendar(new Date())
  4. );

static iterator() 获取时间范围迭代器

  1. /**
  2. * DateUtils.RANGE_WEEK_SUNDAY(1): 从上周日开始的一周
  3. * DateUtils.RANGE_WEEK_MONDAY(2): 从本周一开始的一周
  4. * DateUtils.RANGE_WEEK_RELATIVE(3): 从今天开始的一周
  5. * DateUtils.RANGE_WEEK_CENTER(4): 以今天为中心的一周
  6. * DateUtils.RANGE_MONTH_SUNDAY(5): 从上月最后一个周日开始的一个月
  7. * DateUtils.RANGE_MONTH_MONDAY(6): 从上月最后一个周一开始的一个月
  8. */
  9. Iterator<Calendar> iterator = DateUtils.iterator(DateUtils.addDays(new Date(),1), DateUtils.RANGE_MONTH_MONDAY);
  10. while (iterator.hasNext()){
  11. Calendar next = iterator.next();
  12. }

static parseDate() 字符串转 Date

  1. Date date = DateUtils.parseDate("2019-10-21 11:59:04", "yyyy-MM-dd hh:mm:ss");

static parseDateStrictly() 字符串转 Date (严格的)

  1. Date date = DateUtils.parseDateStrictly("2019-10-21 11:59:04", "yyyy-MM-dd hh:mm:ss");

static round() 日期四舍五入

  1. /**
  2. * 假设当前时间 2019-10-21 03:07:36
  3. * Calendar.YEAR(1): 2020-01-01 00:00:00
  4. * Calendar.MONTH(2): 2019-11-01 00:00:00
  5. * Calendar.DATE(5): 2019-10-22 00:00:00
  6. * Calendar.AM_PM(9): 2019-10-21 12:00:00
  7. * Calendar.HOUR(10): 2019-10-21 03:00:00
  8. * Calendar.DECEMBER(11): 2019-10-21 03:00:00
  9. * Calendar.MINUTE(12): 2019-10-21 03:08:00
  10. * Calendar.SECOND(13): 2019-10-21 03:07:37
  11. * Calendar.MILLISECOND(14): 2019-10-21 03:07:36
  12. */
  13. Date date = DateUtils.round(new Date(), Calendar.YEAR);

static setMilliseconds() 修改毫秒的值

  1. // 修改成100毫秒
  2. Date date = DateUtils.setMilliseconds(new Date(), 100);

static setSeconds() 修改秒的值

  1. // 修改成45秒
  2. Date date = DateUtils.setSeconds(new Date(), 45);

static setMinutes() 修改分的值

  1. // 修改成30分
  2. Date date = DateUtils.setMinutes(new Date(), 30);

static setHours() 修改小时的值

  1. // 修改成晚上八点
  2. Date date = DateUtils.setHours(new Date(), 20);

static setDays() 修改天的值

  1. // 修改成21日
  2. Date date = DateUtils.setDays(new Date(), 21);

static setMonths() 修改月份的值

  1. // 修改成5月份
  2. Date date = DateUtils.setMonths(new Date(), 5);

static setYears() 修改年份的值

  1. // 修改成2020年
  2. Date date = DateUtils.setYears(new Date(), 2020);

static toCalendar() 创建日历对象

  1. Calendar calendar = DateUtils.toCalendar(new Date());

static truncate() 时间向下取整

  1. /**
  2. * 假设当前时间 2019-10-21 06:45:18
  3. * Calendar.YEAR(1): 2019-01-01 00:00:00
  4. * Calendar.MONTH(2): 2019-10-01 00:00:00
  5. * Calendar.DATE(5): 2019-10-21 00:00:00
  6. * Calendar.AM_PM(9): 2019-10-21 12:00:00
  7. * Calendar.HOUR(10): 2019-10-21 18:00:00
  8. * Calendar.DECEMBER(11): 2019-10-21 18:00:00
  9. * Calendar.MINUTE(12): 2019-10-21 18:45:00
  10. * Calendar.SECOND(13): 2019-10-21 18:45:18
  11. * Calendar.MILLISECOND(14): 2019-10-21 18:45:18
  12. */
  13. Date date = DateUtils.truncate(new Date(), Calendar.YEAR);

static truncatedCompareTo() 位置值比较

  1. /**
  2. * Calendar.YEAR(1): 0
  3. * Calendar.MONTH(2): 0
  4. * Calendar.DATE(5): 0
  5. * Calendar.AM_PM(9): 0
  6. * Calendar.HOUR(10): 1
  7. * Calendar.DECEMBER(11): 1
  8. * Calendar.MINUTE(12): 1
  9. * Calendar.SECOND(13): 1
  10. * Calendar.MILLISECOND(14): 1
  11. */
  12. int num = DateUtils.truncatedCompareTo(
  13. DateUtils.addHours(new Date(), 1),
  14. new Date(),
  15. Calendar.YEAR
  16. );

static truncatedEquals() 位置值比较

  1. /**
  2. * Calendar.YEAR(1): true
  3. * Calendar.MONTH(2): true
  4. * Calendar.DATE(5): true
  5. * Calendar.AM_PM(9): true
  6. * Calendar.HOUR(10): false
  7. * Calendar.DECEMBER(11): false
  8. * Calendar.MINUTE(12): false
  9. * Calendar.SECOND(13): false
  10. * Calendar.MILLISECOND(14): false
  11. */
  12. boolean res = DateUtils.truncatedEquals(
  13. DateUtils.addHours(new Date(), 1),
  14. new Date(),
  15. Calendar.YEAR
  16. );

------------------------------------

三、DurationFormatUtils 持续时间格式化工具和常亮

可识别的占位符

占位符 寓意
y
M
d
H 小时
m 分钟
s
S 毫秒

static formatDuration() 毫秒换算成相应的格式

  1. // 毫秒
  2. long timeGap = 3600000L;
  3. // 换算成小时
  4. String dayFormatPattern = "结果:HHH小时";
  5. // 默认位数不足补0,结果:001小时
  6. System.out.println(DurationFormatUtils.formatDuration(timeGap,dayFormatPattern));
  7. // 参数3设为false不补0,结果:1小时
  8. System.out.println(DurationFormatUtils.formatDuration(timeGap,dayFormatPattern,false));

static formatDurationHMS() 毫秒格式化为时分秒毫秒

  1. // 毫秒
  2. long timeGap = 3600000L;
  3. // 同等于 formatDuration 的 HH:mm:ss.SSS 格式
  4. System.out.println(DurationFormatUtils.formatDurationHMS(timeGap));
  5. // 结果:01:00:00.000

static formatDurationISO() 毫秒格式化为ISO8601格式

  1. // 毫秒
  2. long timeGap = 3600000L;
  3. // 同等于 formatDuration 的 'P'yyyy'Y'M'M'd'DT'H'H'm'M's.SSS'S' 格式
  4. System.out.println(DurationFormatUtils.formatDurationISO(timeGap));
  5. // 结果:P0Y0M0DT1H0M0.000S

static formatDurationWords() 毫秒格式化带英文说明

  1. // 毫秒
  2. long timeGap = 3600000L;
  3. // 只显示不为0的,结果:1 hour
  4. System.out.println(DurationFormatUtils.formatDurationWords(timeGap,true,true));
  5. // 向前补0,结果:0 days 1 hour
  6. System.out.println(DurationFormatUtils.formatDurationWords(timeGap,false,true));
  7. // 向后补0,结果:1 hour 0 minutes 0 seconds
  8. System.out.println(DurationFormatUtils.formatDurationWords(timeGap,true,false));
  9. // 前后都补0,结果:0 days 1 hour 0 minutes 0 seconds
  10. System.out.println(DurationFormatUtils.formatDurationWords(timeGap,false,false));

static formatPeriod() 两个时间之间间隔的毫秒换算成相应的格式

  1. // 时间1
  2. long timeGap = System.currentTimeMillis();
  3. // 时间2
  4. long timeGap2 = timeGap+3600000;
  5. // 换算格式
  6. String dayFormatPattern = "结果:HHH小时";
  7. // 默认补0,结果:001小时
  8. System.out.println(DurationFormatUtils.formatPeriod(timeGap,timeGap2,dayFormatPattern));
  9. // 不补0,最后的参数为时区,结果:1小时
  10. System.out.println(DurationFormatUtils.formatPeriod(timeGap,timeGap2,dayFormatPattern,false, TimeZone.getDefault()));

static formatPeriodISO() 两个时间之间间隔的毫秒格式化为ISO8601格式

  1. // 时间1
  2. long timeGap = System.currentTimeMillis();
  3. // 时间2
  4. long timeGap2 = timeGap+3600000;
  5. // 同等于 formatPeriod 的 'P'yyyy'Y'M'M'd'DT'H'H'm'M's.SSS'S' 格式
  6. System.out.println(DurationFormatUtils.formatPeriodISO(timeGap,timeGap2));
  7. // 结果:P0Y0M0DT1H0M0.000S

------------------------------------

四、FastDateFormat 格式化工具(线程安全版)

static getInstance() 获取指定格式规则的格式化对象

  1. // 当前时间戳
  2. long time = System.currentTimeMillis();
  3. // 格式化对象
  4. FastDateFormat fastDateFormat1 = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
  5. // 指定区域
  6. FastDateFormat fastDateFormat2 = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss",Locale.CHINA);
  7. // 指定时区
  8. FastDateFormat fastDateFormat3 = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss",TimeZone.getDefault());
  9. // 指定区域和时区
  10. FastDateFormat fastDateFormat4 = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss",TimeZone.getDefault(),Locale.CHINA);
  11. // 结果都是一样的:2020-01-08 10:22:56
  12. System.out.println(fastDateFormat1.format(new Date(time)));
  13. System.out.println(fastDateFormat2.format(new Date(time)));
  14. System.out.println(fastDateFormat3.format(new Date(time)));
  15. System.out.println(fastDateFormat4.format(new Date(time)));

static getDateInstance() 获取预定义格式化对象(年月日周)

  1. // 当前时间戳
  2. long time = System.currentTimeMillis();
  3. // FastDateFormat.SHORT:简日期格式(20-1-8)
  4. // FastDateFormat.MEDIUM:常规日期格式(2020-1-8)
  5. // FastDateFormat.LONG:当前区域的日期格式(2020年1月8日)
  6. // FastDateFormat.FULL:当前区域的完整格式(2020年1月8日 星期三)
  7. FastDateFormat fastDateFormat1 = FastDateFormat.getDateInstance(FastDateFormat.LONG);
  8. // 设置区域
  9. FastDateFormat fastDateFormat1 = FastDateFormat.getDateInstance(FastDateFormat.LONG,Locale.ENGLISH);
  10. // 设置时区
  11. FastDateFormat fastDateFormat2 = FastDateFormat.getDateInstance(FastDateFormat.LONG,TimeZone.getDefault());
  12. // 设置时区和区域
  13. FastDateFormat fastDateFormat3 = FastDateFormat.getDateInstance(FastDateFormat.LONG,TimeZone.getDefault(),Locale.CHINA);
  14. // 结果:2020年1月8日
  15. System.out.println(fastDateFormat1.format(new Date(time)));
  16. // 结果:January 8, 2020
  17. System.out.println(fastDateFormat2.format(new Date(time)));
  18. // 结果:2020年1月8日
  19. System.out.println(fastDateFormat3.format(new Date(time)));
  20. // 结果:2020年1月8日
  21. System.out.println(fastDateFormat4.format(new Date(time)));

static getTimeInstance() 获取预定义格式化对象(时分秒)

  1. // 当前时间戳
  2. long time = System.currentTimeMillis();
  3. // FastDateFormat.SHORT:简时间格式(上午11:07)
  4. // FastDateFormat.MEDIUM:常规格式(11:07:11)
  5. // FastDateFormat.LONG:当前区域的时间格式(上午11时07分11秒)
  6. // FastDateFormat.FULL:当前区域的完整格式(上午11时07分11秒 CST)
  7. FastDateFormat fastDateFormat1 = FastDateFormat.getTimeInstance(FastDateFormat.LONG);
  8. // 设置区域
  9. FastDateFormat fastDateFormat2 = FastDateFormat.getTimeInstance(FastDateFormat.LONG,Locale.ENGLISH);
  10. // 设置时区
  11. FastDateFormat fastDateFormat3 = FastDateFormat.getTimeInstance(FastDateFormat.LONG,TimeZone.getDefault());
  12. // 设置地区和时区
  13. FastDateFormat fastDateFormat4 = FastDateFormat.getTimeInstance(FastDateFormat.LONG,TimeZone.getDefault(),Locale.CHINA);
  14. // 结果:上午11时16分35秒
  15. System.out.println(fastDateFormat1.format(new Date(time)));
  16. // 结果:11:16:35 AM CST
  17. System.out.println(fastDateFormat2.format(new Date(time)));
  18. // 结果:上午11时16分35秒
  19. System.out.println(fastDateFormat3.format(new Date(time)));
  20. // 结果:上午11时16分35秒
  21. System.out.println(fastDateFormat4.format(new Date(time)));

static getDateTimeInstance() 获取预定义格式化对象(年月日 时分秒)

  1. // 当前时间戳
  2. long time = System.currentTimeMillis();
  3. // 参数使用说明参考 getDateInstance 和 getTimeInstance
  4. FastDateFormat fastDateFormat1 = FastDateFormat.getDateTimeInstance(FastDateFormat.LONG,FastDateFormat.LONG);
  5. FastDateFormat fastDateFormat2 = FastDateFormat.getDateTimeInstance(FastDateFormat.LONG,FastDateFormat.LONG,Locale.ENGLISH);
  6. FastDateFormat fastDateFormat3 = FastDateFormat.getDateTimeInstance(FastDateFormat.LONG,FastDateFormat.LONG,TimeZone.getDefault());
  7. FastDateFormat fastDateFormat4 = FastDateFormat.getDateTimeInstance(FastDateFormat.LONG,FastDateFormat.LONG,TimeZone.getDefault(),Locale.CHINA);
  8. // 结果:2020年1月8日 上午11时25分25秒
  9. System.out.println(fastDateFormat1.format(new Date(time)));
  10. // 结果:January 8, 2020 11:25:25 AM CST
  11. System.out.println(fastDateFormat2.format(new Date(time)));
  12. // 结果:2020年1月8日 上午11时25分25秒
  13. System.out.println(fastDateFormat3.format(new Date(time)));
  14. // 结果:2020年1月8日 上午11时25分25秒
  15. System.out.println(fastDateFormat4.format(new Date(time)));

parse() 字符串转换成日期对象

  1. FastDateFormat fastDateFormat = FastDateFormat.getInstance("yyyy-MM-dd");
  2. // 按照格式识别成日期对象
  3. Date date1 = fastDateFormat.parse("2020-01-08");
  4. // 从第四个字符开始识别
  5. Date date2 = fastDateFormat.parse("日期:2020-01-08",new ParsePosition(3));
  6. // 第三个参数有点复杂,有时间自己去研究

parseObject() 字符串转换成未知对象

  1. FastDateFormat fastDateFormat = FastDateFormat.getInstance("yyyy-MM-dd");
  2. // 不太理解为什么要转成 Object
  3. Date date = (Date)fastDateFormat.parseObject("日期:2020-01-08", new ParsePosition(3));

getLocale() 获取区域的信息

getTimeZone() 获取时区信息

getPattern() 获取格式信息

getMaxLengthEstimate() 获取格式化字符串最大长度

------------------------------------

五、FastDateParser 反格式化工具(线程安全版)

不能直接实例化,需要通过继承的方式实现功能

继承FastDateParser

  1. public class MyFastDateParser extends FastDateParser {
  2. // 必须实现,且设置为 public
  3. public MyFastDateParser(String pattern, TimeZone timeZone, Locale locale) {
  4. super(pattern, timeZone, locale);
  5. }
  6. // 必须实现,且设置为 public
  7. public MyFastDateParser(String pattern, TimeZone timeZone, Locale locale, Date centuryStart) {
  8. super(pattern, timeZone, locale, centuryStart);
  9. }
  10. }

parse() 字符串转换成日期对象

  1. FastDateParser myFastDateParser = new MyFastDateParser("yyyy-MM-dd",TimeZone.getDefault(),Locale.CHINA);
  2. // 按照格式识别成日期对象
  3. Date date1 = myFastDateParser.parse("2020-01-08");
  4. // 从第四个字符开始识别
  5. Date date2 = myFastDateParser.parse("日期:2020-01-08",new ParsePosition(3));
  6. // 第三个参数有点复杂,有时间自己去研究

parseObject() 字符串转换成未知对象

  1. FastDateParser myFastDateParser = new MyFastDateParser("yyyy-MM-dd",TimeZone.getDefault(),Locale.CHINA);
  2. // 不太理解为什么要转成 Object
  3. Date date = (Date)myFastDateParser.parseObject("日期:2020-01-08", new ParsePosition(3));

getLocale() 获取区域的信息

getTimeZone() 获取时区信息

getPattern() 获取格式信息

------------------------------------

六、FastDatePrinter 格式化工具(线程安全版)

不能直接实例化,需要通过继承的方式实现功能

继承FastDatePrinter

  1. public class MyFastDatePrinter extends FastDatePrinter {
  2. // 必须实现,且设置为 public
  3. public MyFastDatePrinter(String pattern, TimeZone timeZone, Locale locale) {
  4. super(pattern, timeZone, locale);
  5. }
  6. }

format() 时间格式化

  1. // 时间
  2. long time = System.currentTimeMillis();
  3. // 结果容器
  4. StringBuilder sb = new StringBuilder();
  5. FastDatePrinter myFastDatePrinter = new MyFastDatePrinter("yyyy-MM-dd",TimeZone.getDefault(),Locale.CHINA);
  6. // 结果:2020-01-09
  7. System.out.println(myFastDatePrinter.format(time));
  8. // 结果:2020-01-09
  9. System.out.println(myFastDatePrinter.format(time,sb));
  10. // 结果:2020-01-09
  11. System.out.println(sb);

getLocale() 获取区域的信息

getTimeZone() 获取时区信息

getPattern() 获取格式信息

getMaxLengthEstimate() 获取格式化字符串最大长度

------------------------------------

七、FastTimeZone 快速时区工具

static getGmtTimeZone() 获取GMT时区

static getTimeZone() 通过id获取时区

------------------------------------

八、StopWatch 计时工具

static createStarted() 创建并启动一个秒表

  1. StopWatch started = StopWatch.createStarted();

getStartTime() 获取秒表开始时的时间戳

  1. StopWatch started = StopWatch.createStarted();
  2. // 结果:1578536764556
  3. System.out.println(started.getStartTime());

getTime() 获取秒表的时间间隔

  1. StopWatch started = StopWatch.createStarted();
  2. Thread.sleep(1000);
  3. // 默认是毫秒,结果:1009
  4. System.out.println(started.getTime());
  5. // 设置成微妙:结果:1009734
  6. System.out.println(started.getTime(TimeUnit.MICROSECONDS));

getNanoTime() 获取秒表的时间间隔(纳秒)

  1. StopWatch started = StopWatch.createStarted();
  2. Thread.sleep(1000);
  3. // 结果:1004136700
  4. System.out.println(started.getNanoTime());
  5. // 结果:1004312400
  6. System.out.println(started.getNanoTime());

split() 拆分秒表

  1. StopWatch started = StopWatch.createStarted();
  2. // 拆分没有返回值
  3. started.split();

unsplit() 消除拆分

  1. StopWatch started = StopWatch.createStarted();
  2. // 必须拆分
  3. started.split();
  4. // 消除
  5. started.unsplit();

getSplitTime() 获取拆分秒表的时间间隔(毫秒)

  1. StopWatch started = StopWatch.createStarted();
  2. Thread.sleep(1000);
  3. // 拆分
  4. started.split();
  5. // 结果:1004
  6. System.out.println(started.getSplitTime());

getSplitNanoTime() 获取拆分秒表的时间间隔(纳秒)

  1. StopWatch started = StopWatch.createStarted();
  2. Thread.sleep(1000);
  3. // 拆分
  4. started.split();
  5. // 结果:1007609400
  6. System.out.println(started.getSplitNanoTime());

stop() 停止

  1. StopWatch started = StopWatch.createStarted();
  2. // 停止
  3. started.split();

reset() 重置

  1. StopWatch started = StopWatch.createStarted();
  2. // 必须停止
  3. started.split();
  4. // 重置
  5. started.reset();

start() 启动

  1. StopWatch started = StopWatch.createStarted();
  2. // 停止
  3. started.split();
  4. // 必须重置
  5. started.reset();
  6. // 启动
  7. started.start();

suspend() 暂停

  1. StopWatch started = StopWatch.createStarted();
  2. // 暂停
  3. started.suspend();

resume() 恢复

  1. StopWatch started = StopWatch.createStarted();
  2. // 必须暂停
  3. started.suspend();
  4. // 恢复
  5. started.resume();

isStarted() 是否启动

  1. StopWatch started = StopWatch.createStarted();
  2. // 结果:true
  3. System.out.println(started.isStarted());
  4. // 停止
  5. started.stop();
  6. // 结果:false
  7. System.out.println(started.isStarted());

isStopped() 是否停止

  1. StopWatch started = StopWatch.createStarted();
  2. // 结果:false
  3. System.out.println(started.isStopped());
  4. // 停止
  5. started.stop();
  6. // 结果:true
  7. System.out.println(started.isStopped());

isSuspended() 是否暂停

  1. StopWatch started = StopWatch.createStarted();
  2. // 结果:false
  3. System.out.println(started.isSuspended());
  4. // 暂停
  5. started.suspend();
  6. // 结果:true
  7. System.out.println(started.isSuspended());

------------------------------------

九、TimeZones 时区工具

static GMT_ID GMT

------------------------------------

exception 异常工具类

------------------------------------

event 事件工具类

------------------------------------

builder

------------------------------------

concurrent 并发工具类

------------------------------------

math 算数工具类

------------------------------------

mutable

------------------------------------

reflect 反射工具类

一、ConstructorUtils 构造函数辅助类

status getAccessibleConstructor() 检验构造函数可访问性

  1. // 通过当前方法可获取一个构造函数类
  2. Constructor<TestParent> accessibleConstructor = ConstructorUtils.getAccessibleConstructor(TestParent.class);
  3. // Test的无参构造函被覆盖了,结果:null
  4. System.out.println(ConstructorUtils.getAccessibleConstructor(Test.class));
  5. // 结果:null
  6. System.out.println(ConstructorUtils.getAccessibleConstructor(Test.class,String.class));
  7. // 成功找到一个带Object参数的构造函数,结果:public com.lidaye.demo.Test(java.lang.Object)
  8. System.out.println(ConstructorUtils.getAccessibleConstructor(Test.class,Object.class));
  9. // 通过构造函数类重新获取,结果:public com.lidaye.demo.TestParent()
  10. System.out.println(ConstructorUtils.getAccessibleConstructor(accessibleConstructor));

status getMatchingAccessibleConstructor() 检验构造函数可访问性(参数类型兼容)

  1. // Test的无参构造函被覆盖了,结果:null
  2. System.out.println(ConstructorUtils.getMatchingAccessibleConstructor(Test.class));
  3. // 兼容到 Object 的带参构造,结果:public com.lidaye.demo.Test(java.lang.Object)
  4. System.out.println(ConstructorUtils.getMatchingAccessibleConstructor(Test.class,String.class));
  5. // 结果:public com.lidaye.demo.Test(java.lang.Object)
  6. System.out.println(ConstructorUtils.getMatchingAccessibleConstructor(Test.class,Object.class));

status invokeConstructor() 通过构造函数取对象实例(参数类型兼容)

  1. try {
  2. // 报错:No such accessible constructor on object: com.lidaye.demo.Test
  3. System.out.println(ConstructorUtils.invokeConstructor(Test.class));
  4. // 结果:Test{name='李大爷'}
  5. System.out.println(ConstructorUtils.invokeConstructor(Test.class,"李大爷"));
  6. // 结果:Test{name='李学霸'}
  7. System.out.println(ConstructorUtils.invokeConstructor(Test.class,new String[]{"李学霸"},new Class[]{String.class}));
  8. } catch (NoSuchMethodException e) {
  9. e.printStackTrace();
  10. } catch (IllegalAccessException e) {
  11. e.printStackTrace();
  12. } catch (InvocationTargetException e) {
  13. e.printStackTrace();
  14. } catch (InstantiationException e) {
  15. e.printStackTrace();
  16. }

status invokeExactConstructor() 通过构造函数取对象实例

  1. try {
  2. // 报错:No such accessible constructor on object: com.lidaye.demo.Test
  3. System.out.println(ConstructorUtils.invokeExactConstructor(Test.class));
  4. // 报错:No such accessible constructor on object: com.lidaye.demo.Test
  5. System.out.println(ConstructorUtils.invokeExactConstructor(Test.class,"李大爷"));
  6. // 结果:Test{name='李学霸'}
  7. System.out.println(ConstructorUtils.invokeExactConstructor(Test.class,new String[]{"李学霸"},new Class[]{Object.class}));
  8. // 报错:No such accessible constructor on object: com.lidaye.demo.Test
  9. System.out.println(ConstructorUtils.invokeExactConstructor(Test.class,new Object[]{"李学霸"},new Class[]{String.class}));
  10. // 结果:Test{name='李学霸'}
  11. System.out.println(ConstructorUtils.invokeExactConstructor(Test.class,new Object[]{"李学霸"},new Class[]{Object.class}));
  12. } catch (NoSuchMethodException e) {
  13. e.printStackTrace();
  14. } catch (IllegalAccessException e) {
  15. e.printStackTrace();
  16. } catch (InvocationTargetException e) {
  17. e.printStackTrace();
  18. } catch (InstantiationException e) {
  19. e.printStackTrace();
  20. }

------------------------------------

tuple 元组工具类

------------------------------------

text

------------------------------------

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注