官方地址:
http://jakarta.apache.org/commons/lang/概述:
标准的java库并没有提供足够的处理他的核心类的方法,
Lang组件提供了这些扩展的方法
lang 组件为java.lang API提供了一套帮助类。特别是String处理方法,基本的数字处理方法,对象反射,创建和序列化和系统属性。另外他包含了一个可继承的
enum类型,一个exception结构,对java.util.Date的基本加强以及一系列构建方法,比如hashCode,toString和equals
可以点击下面的连接获得体验:
http://www.j2medev.com/bbs/dispbbs.asp?boardid=3&id=3835&star=1&page=3http://www.sentom.net/list.asp?id=76 lang.*
String字符串处理-StringUtils,StringEscapeUtils,RondomStringUtils,Tokenizer,WordUtils. RandomStringUtils 顾名思义,它提供了一段文本,常用来做默认密码的值。 StringEscapeUtils 包含了escape和unescape "java,javascript,html,xml和sql"的方法。 Tokenizer 是java.util.StringTokenizer的改良。
另外,WordUtils是另一个String处理类。他在String的单词层次上工作,比如,WordUtils.capitalize方法会将一段文本中的每个单词都首字母大写。WordUtils也包含了包装文本的方法。
字符处理- CharSetUtils, CharSet, CharRange, CharUtils字符的处理也很重要,CharUtils因此而存在。CharSetUtils则是为了对字符串作批处理。注意,尽管CharSetUtils接受一个String参数,但却把它当成一组字符。比如:CharSetUtils.delete("testtest", "tr")将删除所有的t和所有的r,而不仅仅是tr这个字符串。
CharRange和CharSet是CharSetUtils内部将要用到的类。
JVM交互-SystemUtils, CharEncoding
SystemUtils是个很小的类,他将使你获得你的JVM平台信息变得更为简单。比如:
SystemUtils.isJavaVersionAtLeast(1.3f)
。CharEncoding也是被用来做和jvm的交互,可能会被用来查看特定的环境上支持那种字符编码。
序列化-SerializationUtils, SerializationException
序列化并不难!一个简单的工具类就可以刈除你的痛苦。而且,他提供一个方法通过反序列化和重序列化来克隆对象,这是个很老的java诀窍。
Assorted functions -ObjectUtils,ClassUtils,ArrayUtils,BooleanUtils
ObjectUtils提供了许多对对象便利的操作,以及大部分的对java.lang.Object的方法的null-safe实现。
ClassUtils提供了一套用于反射的帮助函数。值得留意的是在ClassUtils隐含的comparators,他可以对Class和package按名称进行排序。这个排序仅仅是字典排序。
接下来,我们介绍ArrayUtils.他有很多方法和这些方法的重载方法。这个类值得我们深入的了解一下。开始之前,我们假设所有的被提及的方法都被重载(无论是基本类型还是对象类型)。而且,‘xxx’代表了一个基本类型,有时候也包含了对象。
- 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的相关方法, 但是他用来处理primitive/Object数组. 另外, lastIndexOf 系列的方法也存在.
isEmpty(xxx[])
判断一个数组是否为null或者空.
isSameLength(xxx[], xxx[])
判断2个数组的大小是否相等.
- 除了添加的方法, 这里也提供了2类删除的方法. 第一种是根据索引删除:remove(xxx[], int), 第二种删除数组中的第一个值:remove(xxx[], xxx).
-
reverse(xxx[])
翻转一个数组.
- The
subarray(xxx[], int, int)
取出一个大数组的一部分.
- 基本类型和基本类型的包装类之间的转换可以通过
toObject(xxx[])
和toPrimitive(Xxx[])
方法.
ArrayUtils.toMap(Object[])用来将一个数组转化为一个map,比如:
Map colorMap = MapUtils.toMap(new String[][] {{
{"RED", "#FF0000"},
{"GREEN", "#00FF00"},
{"BLUE", "#0000FF"}
});
BooleanUtils,对这个类,或许你有时候会对他的
BooleanUtils.toBoolean(String)方法感兴趣。异常-IllegalClassException, IncompleteArgumentException, NotImplementedException, NullArgumentException, UnhandledException
lang.builder.*
提供了HashCodeBuilder,EqualsBuilder, CompareToBuilder, ToStringBuilder。笔者在项目中经常用到HashCodeBuilder,具体用法参照文章前面给出的连接。
lang.enums.* (formerly lang.enum)
他主要的功能就是为你的常量赋值,并且给定他们的顺序. For example:
public final class ColorEnum extends Enum {
public static final ColorEnum RED = new ColorEnum("Red");
public static final ColorEnum GREEN = new ColorEnum("Green");
public static final ColorEnum BLUE = new ColorEnum("Blue");
private ColorEnum(String color) {
super(color);
}
public static ColorEnum getEnum(String color) {
return (ColorEnum) getEnum(ColorEnum.class, color);
}
public static Iterator iterator() {
return iterator(ColorEnum.class);
}
}