分享
 
 
 

Apache Jakarta Common Lang 介绍

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

Apache Jakarta Common Lang 介绍

无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数。你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现。

在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Websphere, Eclipse 等等。我们就从这个包开始介绍整个 common 项目。

Lang 中最大的也是最常用的类是 StringUtils, StringUtils 最常用的函数是 isEmpty。这里举一个例子让你熟悉一下:

String str = null;

if(StringUtils.isEmpty(str)){

}

str = StringUtils.lowerCase(str);

str = StringUtils.capitalize(str);

str = StringUtils.swapCase(str);

StringUtils.isNumeric(str);

StringUtils.isAsciiPrintable(str);

StringUtils.equalsIgnoreCase(str,"");

其中,

if(StringUtils.isEmpty(str)){

}

相当于

if(str == null || str.length() == 0){

}

从以上代码可以看出这个工具类的特点:

第一、这些函数都是静态函数,并且很少抛出异常,也很少抛出控制针异常。

第二、这些函数的功能大多是增强标准 Java 中 java.lang.String 类的功能。

其实,整个 lang 包的函数基本上都在增强 java.lang 包的功能。一个有趣的设计是,虽然 StringUtils 里面的函数都是静态函数,按照通常的做法,会把构造函数设计成 private, 但是不!StringUtils 的构造函数是 public 的。构造函数里面的注释写着 "no init"。这就有意思了,你可以 new 一个 StringUtils,虽然没有特别的好处,但是也没有特别的坏处;你可以写一个 StringUtils 的子类,虽然这也不太常见。这里面的思想似乎是,使用这个工具包的软件开发人员想怎么用就怎么用,做工具类的时候不用太多限制。

至于不抛异常是因为现在很多人已经意识到 Java 中的异常不是什么好东西,如果不用异常也能写程序,为什么还要用异常?用了异常就要写很多 try catch,在很多场合,比如 jdbc driver,这已经证明了会使代码量增加并且代码的可读性变差。

这里的思路会不会影响大家写程序的习惯呢?

StringUtils 的函数很多,不一一列举。 Lang 中次重要的类要数 ArrayUtils,主要功能涉及到数组的比较、转换、拆分、合并、查找、增减、倒转等等操作。在 JDK 中,这类操作没有现成的函数。

Lang 中工具类比较多,这里介绍几个主要的:

ClassUtils getShortClassName,这个函数应该在 java.lang.Class 类中有的,我看到很多人自己写这个函数。getAllInterfaces,convertClassNamesToClasses,isAssignable,primitivesToWrappers,isInnerClass。

NumberUtils 关于数字以及数字和字符串转换的类 stringToInt,toDouble,createNumber,isAllZeros, int compare(float lhs, float rhs), isNumber(String str),double min(double[] array)。

RandomUtils 用于产生随机数的。

DateFormatUtils 日期时间格式转换,以及本地时间和 UTC 时间转换。

DateUtils 日期工具类。isSameDay,truncate,round,modify。

基于反射机制的几个类:

CompareToBuilder 比较,用在算法、排序、比较的地方。reflectionCompare,append。

EqualsBuilder 通过反射机制比较。reflectionEquals 很多项目中用到。

HashCodeBuilder 可以通过反射生成 hash code,很多算法的地方涉及到 hash code,但是并不是每个人都知道一种 hash code 的生成方法。

ToStringBuilder 当你需要重载 toString 函数而不想写代码把当前类的所有成员信息列出来,可以用这个函数。

其它的几个类我用得比较少:

SerializationUtils Java 中得序列化比较奥妙,容易出错啊。

SystemUtils 可以读取一些关于 jdk 信息,操作系统信息的工具类。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有