TNT blog  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統計
          • 隨筆 - 5
          • 文章 - 40
          • 評論 - 7
          • 引用 - 0

          導航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          home

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

           

            無論你在開發哪中 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 信息,操作系統信息的工具類。

          posted on 2006-06-01 11:15 TNT 閱讀(527) 評論(0)  編輯  收藏 所屬分類: apache
           
          Copyright © TNT Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 施秉县| 宾阳县| 杂多县| 浮山县| 阿图什市| 泰安市| 营口市| 丰城市| 应城市| 澄江县| 长武县| 宝鸡市| 泸西县| 兰州市| 贵定县| 贡山| 灵石县| 沛县| 安新县| 拜泉县| 子洲县| 合山市| 兴安盟| 山东| 宜州市| 福建省| 徐州市| 宜宾县| 通州区| 古丈县| 彭水| 汝南县| 嘉义县| 东兴市| 旬阳县| 本溪市| 海盐县| 茶陵县| 申扎县| 思南县| 城口县|