首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

开源工具 — Apache Commons Lang(一)

2013-10-14 
开源工具 — Apache Commons Lang(1)开源工具系列文章:Apache Commons Lang(1):http://ray-yui.iteye.com/b

开源工具 — Apache Commons Lang(1)

开源工具系列文章:
      Apache Commons Lang(1):http://ray-yui.iteye.com/blog/1953020


相信Apache的大名各位一定不会陌生,Java领域中常用的Ant,Maven,Struts1~2等都是托管在Apache下的项目,而在使用Apache框架的时候,通常要添加框架的依赖包,包括apache-commons系列的依赖包,相信读者对此也不会陌生,而apache-common是非常有用的工具包,包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动


      一个优秀的类应该重写toString,hashCode,equals,compareTo方法,我们来看一下apache如何带我们简化这些操作,以下示例支持两种形式,一种是通过逐个参数添加从而精细控制那些参数参与比较和输出,另一种是通过反射让全部参数都参与比较和输出

      Builder系列

public class TestMain {public static void main(String[] args) throws IllegalAccessException {Test test = new Test("1", "Ray", "hello");// 以下两个方法完全一样,都能获取共有或私有变量,因为第三个参数都设置了不检查FieldUtils.getDeclaredField(Test.class, "username", true);FieldUtils.getField(Test.class, "username", true);// 读取私有或公共变量的值FieldUtils.readField(test, "username", true);// 读取静态变量FieldUtils.readStaticField(Test.class, "STATIC_FIELD");// 写入私有或共有变量FieldUtils.writeField(test, "username", "RayRay", true);// 写入静态变量FieldUtils.writeStaticField(Test.class, "STATIC_FIELD", "static_value");}}


      读者在使用时可能会发现,MethodUtils和ConstructUtils在org.apache.commons.lang.reflect和org.apache.commons.beanutils都存在,但FieldUtils和ClassUtils只在reflect当中存在,因为beanutils提供了另外一种名为PropertyUtils的对属性存取更为方便的工具,但PropertyUtils不能获取传统反射的Field对象,笔者建议MethodUtils和ConstructUtils应该倾向使用beanutils,因为beanutils就是为反射而存在,更专业(虽然提供的方法几乎一样),而使用ClassUtils和要获取传统的Field对象时使用reflect中的FieldUtils


总结:
      commons工具包很多开源组织都有提供,例如google,spring,apache都有各自的工具包,有众多的选择,但最终的目的只是为了方便我们程序的开发和维护,简化我们编写一些常用的逻辑,提升我们开发的效率,从而达到活在开源,善用开源
1 楼 fly_宇光十色 2013-10-08   不错!很需要这些常用工具包的例子代码,可以借鉴! 2 楼 white_crucifix 2013-10-08   只记StringUtils了=,.=

热点排行