Apache Jakarta Common Lang 介紹

來源:互聯網
上載者:User

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){

  }

  從以上代碼可以看出這個工具類的特點:
  第一、這些函數都是靜態函數,並且很少拋出異常,也很少拋出null 指標異常。
  第二、這些函數的功能大多是增強標準 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 資訊,作業系統資訊的工具類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.