欢迎访问shiker.tech

请允许在我们的网站上展示广告

您似乎使用了广告拦截器,请关闭广告拦截器。我们的网站依靠广告获取资金。

【译文】Common Lang使用介绍
(last modified Jun 26, 2023, 2:04 PM )
by
侧边栏壁纸
  • 累计撰写 178 篇文章
  • 累计创建 62 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

【译文】Common Lang使用介绍

橙序员
2022-08-10 / 0 评论 / 0 点赞 / 410 阅读 / 1,877 字 / 正在检测百度是否收录... 正在检测必应是否收录...
文章摘要(AI生成)

Package org.apache.commons.lang3 描述提供高度可重用的静态实用方法,主要关注为 java.lang 类增加价值。这些类中的大多数是不可变的,因此是线程安全的。但是,目前不能保证 CharSet 在所有情况下都是线程安全的。顶级包包含各种 Utils 类,同时还有各种子

Package org.apache.commons.lang3 描述

提供高度可重用的静态实用方法,主要关注为 java.lang 类增加价值。这些类中的大多数是不可变的,因此是线程安全的。但是,目前不能保证 CharSet 在所有情况下都是线程安全的。顶级包包含各种 Utils 类,同时还有各种子包,包括 org.apache.commons.lang3.math、org.apache.commons.lang3.concurrent 和 org.apache.commons.lang3.builder。使用 Utils 类本身通常很简单。它们相当于另一种语言中的全局函数,是独立的、线程安全的、静态方法的集合。相反,子包可能包含可能必须实现的接口或可能需要扩展以从代码中获取全部功能的类。然而,它们可能包含更多类似全局的函数。 Lang 3.0 需要 JDK 1.5 ,因为 Lang 3.2 它需要 JDK 6 ;旧版本 2.6 需要 JDK 1.2 。在这两种情况下,您都可以找到由我们维护的更高版本 JDK 的功能,这些功能可能会被删除或修改以支持下一个主要版本中的 JDK。请注意,Lang 3.0 使用与其前身不同的包,允许它与早期版本同时使用。当您浏览 Lang 文档时,您会发现不推荐使用的方法。这些将在下一个主要版本中删除。所有 util 类都包含空的公共构造函数,并带有不要使用的警告。这似乎是一件奇怪的事情,但它允许像 Velocity 这样的工具访问该类,就好像它是一个 bean。换句话说,是的,我们知道私有构造函数并且选择不使用它们。

字符串操作 - StringUtils、StringEscapeUtils、RandomStringUtils

Lang 有一系列字符串实用程序。 第一个是 StringUtils、oodles 和 oodles 的调整、转换、挤压和拥抱 java.lang.Strings 的函数。 除了 StringUtils,还有一系列其他的 String 操作类; RandomStringUtils 和 StringEscapeUtils。 RandomStringUtils 不言自明。 它提供了生成文本片段的方法,例如可能用于默认密码。 StringEscapeUtils 包含转义和取消转义 Java、JavaScript、JSON、HTML 和 XML 的方法。

如果您想进入 Lang,这些是开始使用的理想课程。 StringUtils 的 StringUtils.capitalize(String)、StringUtils.substringBetween(String, String)/Before/After、StringUtils.split(String) 和 StringUtils.join(Object[]) 都是很好的开始方法。

字符处理 - CharSetUtils、CharSet、CharRange、CharUtils

除了处理字符串之外,处理字符和字符也很重要。 CharUtils 用于此目的,而 CharSetUtils 用于字符串的集合操作。 请注意,虽然 CharSetUtils 采用 String 类型的参数,但它只是作为一组字符。 例如,CharSetUtils.delete(“testtest”, “tr”) 将从字符串中删除所有 t 和所有 r,而不仅仅是字符串“tr”。

CharRange 和 CharSet 都在 CharSetUtils 内部使用,可能很少使用。

JVM交互——SystemUtils、CharEncoding

SystemUtils 是一个简单的小类,可以很容易地找到有关您所在平台的信息。 对某些人来说,这是必要的邪恶。 在我试图确保 Commons Lang 本身在 JDK 1.2 下编译之前,我从来没有期望自己使用它。 在推出了一些 JDK 1.3 的位(Collections.EMPTY_MAP 是一个典型的违规者)之后,我发现其中一个单元测试在 JDK 1.2 下神秘地死亡,但在 JDK 1.3 下运行良好。 没有明显的解决方案,我需要继续前进,所以简单的解决方案是将特定测试包装在 if (SystemUtils.isJavaVersionAtLeast(1.3f)) { 中,记下并继续。

CharEncoding 类还用于与 Java 环境交互,并可用于查看特定环境中支持哪些字符编码。

序列化 - SerializationUtils、SerializationException

序列化不必那么难! 一个简单的 util 类可以消除痛苦,而且它提供了一种通过反序列化和重新序列化来克隆对象的方法,这是一个古老的 Java 技巧。

各种函数 - ObjectUtils、ClassUtils、ArrayUtils、BooleanUtils

你相信吗,ObjectUtils 包含方便的 Objects 函数,主要是 Object 上方法的 null 安全实现。

ClassUtils 主要是一组用于反射的辅助方法。特别值得注意的是隐藏在 ClassUtils 中的比较器,可用于按名称对 Class 和 Package 对象进行排序;但是他们只是按字母顺序排序,不了解先排序 java 和 javax 的常见习惯。

接下来,ArrayUtils。这是一个有许多方法和这些方法的许多重载的大方法,因此可能值得在这里深入研究。在我们开始之前,假设提到的每个方法都为所有基元和 Object 重载。此外,简写的“xxx”暗示了一个通用的原始类型,但通常也包括 Object。

  • ArrayUtils 为所有基本类型提供了单例空数组。这些将主要用于 Collections API 及其 toArray 方法,但也将用于希望在错误时返回空数组的方法。
  • add(xxx[], xxx) 将原始类型添加到数组中,并按照您的预期调整数组的大小。也支持对象。
  • clone(xxx[]) 克隆一个原始数组或对象数组。
  • contains(xxx[], xxx) 在基元或对象数组中搜索基元或对象。
  • getLength(Object) 返回任何数组的长度,如果参数不是数组,则返回 IllegalArgumentException。 hashCode(Object), equals(Object, Object), toString(Object)
  • indexOf(xxx[], xxx) 和 indexOf(xxx[], xxx, int) 是经典 String 方法的副本,但这次是针对原始/对象数组。此外,还存在一组 lastIndexOf 方法。
  • isEmpty(xxx[]) 让您知道数组是零大小还是空。
  • isSameLength(xxx[], xxx[]) 如果数组长度相同,则返回 true。
  • 除了 add 方法之外,还有两种类型的 remove 方法。第一种类型删除索引处的值,remove(xxx[], int),而第二种类型从数组中删除第一个值,remove(xxx[], xxx)。
  • 现在接近尾声了。 reverse(xxx[]) 方法将数组翻转。
  • subarray(xxx[], int, int) 方法从一个更大的数组中拼接出一个数组。
  • 原始到原始包装器的转换由 toObject(xxx[]) 和 toPrimitive(Xxx[]) 方法处理。

最后,ArrayUtils.toMap(Object[]) 值得特别注意。它不是处理数组的重载方法,而是一种从文字创建 Map 的简单方法。

toMap使用

 Map colorMap = ArrayUtils.toMap(new String[][] {{
   {"RED", "#FF0000"},
   {"GREEN", "#00FF00"},
   {"BLUE", "#0000FF"}
 });

我们最后的 util 类是 BooleanUtils。 它包含各种布尔操作方法,最感兴趣的可能是 BooleanUtils.toBoolean(String) 方法,它将各种正/负字符串转换为布尔对象,而不仅仅是像 Boolean.valueOf 那样的真/假。

其他 - BitField,验证

在到达我们的包的末尾时,我们留下了几个迄今为止不适合任何主题的类。

BitField 类提供了一个围绕经典位掩码整数的包装类,而 Validate 类可用于断言(请记住,我们支持 Java 1.2)。

0

评论区