`
javafenger
  • 浏览: 246917 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

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 信息,操作系统信息的工具类。




分享到:
评论

相关推荐

    Java通过Apache提供的Commons Email工具类实现邮箱发送验证码

    Apache Commons Email库为Java开发者提供了一个便捷的方式来实现这个功能。本篇将深入讲解如何使用Apache Commons Email工具类来发送带有验证码的电子邮件。 首先,Apache Commons Email是Apache软件基金会的一个...

    Jakarta Commons使用

    Jakarta Commons 是一个 Apache 软件基金会的项目,它包含了一系列独立、可重用的 Java 类库,旨在提供常见编程任务的解决方案。这些类库覆盖了从输入输出处理到字符串操作,再到网络通信等多个领域。Jakarta ...

    apache java 组件使用,经典介绍

    Apache Jakarta Commons 是Apache软件基金会下的一个子项目,专注于创建和维护独立且可重用的Java组件,主要面向服务器端编程。这些组件不依赖于大型框架,具有独立性,旨在简化开发工作。Jakarta Commons 项目组...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    jakarata common

    **Jakarta Commons** 是一个由Apache软件基金会维护的开源项目,它包含了一系列独立且实用的Java组件,旨在解决常见的编程任务。这些组件被广泛应用于各种Java应用程序和框架中,为开发者提供了丰富的工具集。...

    WebShpere_common_log_docview

    - **Bootstrap Class Loader**:加载Java平台的核心类库,如`java.lang.*`等。 - **Extension Class Loader**:加载扩展类库,通常是部署在`/lib/ext`目录下的JAR文件。 - **Application Class Loader**:每个部署的...

    Java语言Lang包下常用的工具类介绍

    Lang包是Apache Jakarta Common项目中被使用最广泛的Java工具包之一,其中包含了许多实用的工具类,可以帮助开发者快速开发和维护Java应用程序。下面将对Lang包下的常用工具类进行介绍。 1. ClassUtils类: Class...

    利用commons-net包实现ftp上传下载例子

    在压缩包子文件的文件名称列表中,除了核心的`commons-net-1.4.1.jar`之外,还有其他几个Apache Commons库的版本,如`commons-lang.jar`(提供通用的Java语言实用工具)、`commons-io-1.3.1.jar`(提供I/O流操作的...

    open-source-license

    Apache ActiveMQ 5.5.1、Apache Commons BeanUtils 1.8.3、Apache Commons CLI 1.2、Apache Commons Codec 1.6、Apache Commons Collections ...Lang 2.6、Apache Commons Lang3 3.1、Apache Commons Logging 1.1.1 等...

    Struts2自学笔记——Struts2的文件上传

    `jakarta`是基于Apache Commons FileUpload库,而`common`则是Struts1时代的上传方式,现在已较少使用。 3. **Action类的改造** 要处理文件上传,Action类需要继承`org.apache.struts2.interceptor....

    Struts实例讲解

    这包括`Struts.jar`以及所有相关的`common`库,如`commons-logging.jar`, `commons-lang.jar`, `commons-collections.jar`等。此外,还需要将`Struts-*.tld`文件复制到`WEB-INF`目录下,这些TLD(Tag Library ...

    jsp连接SQL数据库

    - 访问Apache官方站点(http://www.apache.org/dist/jakarta/tomcat-4/),下载并安装Tomcat(例如:`jakarta-tomcat-4.1.30.exe`)。 - 默认安装目录:`D:\Tomcat`。 2. **配置Tomcat环境变量**: - 添加`...

    sql2000与jsp的连接的方法

    - **下载 Tomcat**:访问 Apache 官方站点(http://www.apache.org/dist/jakarta/tomcat-4/)下载 Tomcat 安装包 `jakarta-tomcat-4.1.30.exe`。 - **安装 Tomcat**:默认安装至 `D:\Tomcat` 目录。 - **配置环境...

    jdk tomcat配置.txt

    - 从Apache官方站点 (http://www.apache.org/dist/jakarta/tomcat-4/) 下载最新版本的Tomcat安装包(例如:jakarta-tomcat-4.1.30.exe)。 - 安装Tomcat至指定目录(如:D:\Tomcat)。 #### 2. 设置Tomcat环境变量 ...

Global site tag (gtag.js) - Google Analytics