免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
apache commons常用工具類

 1.有些情況下,Arrays滿足不到你對(duì)數(shù)組的操作?不要緊,ArrayUtils幫你 
      ArrayUtils

public class TestMain {

 public static void main(String[] args) {
  int[] nums1 = { 1, 2, 3, 4, 5, 6 };
  // 通過(guò)常量創(chuàng)建新數(shù)組
  int[] nums2 = ArrayUtils.EMPTY_INT_ARRAY;

  // 比較兩個(gè)數(shù)組是否相等
  ArrayUtils.isEquals(nums1, nums2);

  // 輸出數(shù)組,第二參數(shù)為數(shù)組為空時(shí)代替輸出
  ArrayUtils.toString(nums1, "array is null");

  // 克隆新數(shù)組,注意此拷貝為深拷貝
  int[] nums3 = ArrayUtils.clone(nums1);

  // 截取數(shù)組
  ArrayUtils.subarray(nums1, 1, 2);

  // 判斷兩個(gè)數(shù)組長(zhǎng)度是否相等
  ArrayUtils.isSameLength(nums1, nums2);

  // 判斷兩個(gè)數(shù)組類型是否相等,注意int和Integer比較時(shí)不相等
  ArrayUtils.isSameType(nums1, nums2);

  // 反轉(zhuǎn)數(shù)組
  ArrayUtils.reverse(nums1);

  // 查找數(shù)組元素位置
  ArrayUtils.indexOf(nums1, 5);

  // 查找數(shù)組元素最后出現(xiàn)位置
  ArrayUtils.lastIndexOf(nums1, 4);

  // 查找元素是否存在數(shù)組中
  ArrayUtils.contains(nums1, 2);

  // 將基本數(shù)組類型轉(zhuǎn)為包裝類型
  Integer[] nums4 = ArrayUtils.toObject(nums1);

  // 判斷是否為空,length=0或null都屬于
  ArrayUtils.isEmpty(nums1);

  // 并集操作,合并數(shù)組
  ArrayUtils.addAll(nums1, nums2);

  // 增加元素,在下標(biāo)5中插入10,注意此處返回是新數(shù)組
  ArrayUtils.add(nums1, 5, 1111);

  // 刪除指定位置元素,注意返回新數(shù)組,刪除元素后面的元素會(huì)前移,保持?jǐn)?shù)組有序
  ArrayUtils.remove(nums1, 5);

  // 刪除數(shù)組中值為10的元素,以值計(jì)算不以下標(biāo)
  ArrayUtils.removeElement(nums1, 10);
 }
}

2.還在使用傳統(tǒng)反射嗎?還在被反射的樣板代碼困擾?看commons如何幫助我們簡(jiǎn)化反射的工作,從樣板代碼抽身 
ClassUtils

public class TestMain {

 public static void main(String[] args) {
  // 獲取Test類所有實(shí)現(xiàn)的接口
  ClassUtils.getAllInterfaces(Test.class);

  // 獲取Test類所有父類
  ClassUtils.getAllSuperclasses(Test.class);

  // 獲取Test類所在的包名
  ClassUtils.getPackageName(Test.class);

  // 獲取Test類簡(jiǎn)單類名
  ClassUtils.getShortClassName(Test.class);

  // 判斷是否可以轉(zhuǎn)型
  ClassUtils.isAssignable(Test.class, Object.class);

  // 判斷是否有內(nèi)部類
  ClassUtils.isInnerClass(Test.class);

 }
}

ConstructorUtils 
public class TestMain {

 public static void main(String[] args) {

  // 獲取參數(shù)為String的構(gòu)造函數(shù)
  ConstructorUtils.getAccessibleConstructor(Test.class, String.class);

  // 執(zhí)行參數(shù)為String的構(gòu)造函數(shù)
  Test test = (Test) ConstructorUtils.invokeConstructor(Test.class,
    "Hello");
 }
}

MethodUtils

public static void main(String[] args) throws NoSuchMethodException,
   IllegalAccessException, InvocationTargetException {
  // 調(diào)用無(wú)參方法
  Test test = new Test();
  MethodUtils.invokeMethod(test, "publicHello", null);

  // 調(diào)用一參方法
  MethodUtils.invokeMethod(test, "publicHello", "Hello");

  // 調(diào)用多參方法
  MethodUtils.invokeMethod(test, "publicHello", new Object[] { "100",
    new Integer(10) });

  // 調(diào)用靜態(tài)方法
  MethodUtils.invokeStaticMethod(Test.class, "staticHello", null);
 }

FieldUtils 
public class TestMain {

 public static void main(String[] args) throws IllegalAccessException {
  Test test = new Test("1", "Ray", "hello");

  // 以下兩個(gè)方法完全一樣,都能獲取共有或私有變量,因?yàn)榈谌齻€(gè)參數(shù)都設(shè)置了不檢查
  FieldUtils.getDeclaredField(Test.class, "username", true);
  FieldUtils.getField(Test.class, "username", true);

  // 讀取私有或公共變量的值
  FieldUtils.readField(test, "username", true);

  // 讀取靜態(tài)變量
  FieldUtils.readStaticField(Test.class, "STATIC_FIELD");

  // 寫入私有或共有變量
  FieldUtils.writeField(test, "username", "RayRay", true);

  // 寫入靜態(tài)變量
  FieldUtils.writeStaticField(Test.class, "STATIC_FIELD", "static_value");
 }
}

 

3. 很多情況下我們都需要將字符串轉(zhuǎn)換為數(shù)字,或判斷字符串是否是數(shù)字等等操作,NumberUtils幫助我們方便的從字符串轉(zhuǎn)換為數(shù)字,在不使用NumberUtils情況下,若然字符串值不是數(shù)字,使用Integer.parseInt()時(shí)會(huì)報(bào)出java.lang.NumberFormatException,但在NumberUtils的情況下,只會(huì)返回0而不產(chǎn)生錯(cuò)誤

NumberUtils  and  RandomUtils 
public class TestMain {
 public static void main(String[] args) throws IllegalAccessException {
  String str = "12.7";
  /*
   * org.apache.commons.lang.NumberUtils已經(jīng)被棄用,
   * 注意要引入org.apache.commons.lang.math.NumberUtils
   */

  // 判斷字符串是否為整數(shù)
  NumberUtils.isDigits(str);

  // 判斷字符串是否為數(shù)字
  NumberUtils.isNumber(str);

  // 獲取參數(shù)中最大的值,支持傳入數(shù)組
  NumberUtils.max(10, 20, 30);

  // 獲取參數(shù)中最小的值,支持傳入數(shù)組
  NumberUtils.min(10, 20, 30);

  // 將字符串轉(zhuǎn)換為int類型,支持float,long,short等數(shù)值類型
  NumberUtils.toInt(str);

  // 通過(guò)字符串創(chuàng)建BigDecimal類型 ,支持int,float,long等數(shù)值
  NumberUtils.createBigDecimal(str);


  /*
   * RandomUtils幫助我們產(chǎn)生隨機(jī)數(shù),不止是數(shù)字類型 , 
   * 連boolean類型都可以通過(guò)RandomUtils產(chǎn)生
   */
  RandomUtils.nextBoolean();
  RandomUtils.nextDouble();
  RandomUtils.nextLong();
  // 注意這里傳入的參數(shù)不是隨機(jī)種子,而是在0~1000之間產(chǎn)生一位隨機(jī)數(shù)
  RandomUtils.nextInt(1000);

 }
}
4. 在開(kāi)發(fā)當(dāng)中字符串的使用和操作時(shí)最為頻繁的,而null的字符串經(jīng)常讓我們報(bào)出NullPointerException,在使用StringUtils后,將不需要為字符串的null值而煩惱,卻又提供了更多的操作讓我們更方便的操作字符串

 StringUtils 

public class TestMain {
 public static void main(String[] args) throws IllegalAccessException {
  String str = "Hello World";
  /*
   * 由于StringUtils擁有100+的方法,筆者不逐一列舉用法,
   * 只列舉筆者認(rèn)為常用的或筆者使用過(guò)的
   */

  // isEmpty和isBlank的區(qū)別在于isEmpty不會(huì)忽略空格,
  // " "<--對(duì)于這樣的字符串isEmpty會(huì)認(rèn)為不是空,
        // 而isBlank會(huì)認(rèn)為是空,isBlank更常用
  StringUtils.isEmpty(str);
  StringUtils.isNotEmpty(str);
  StringUtils.isBlank(str);
  StringUtils.isNotBlank(str);
  // strip      --> 去除兩端的aa
  // stripStart --> 去除開(kāi)始位置的hell
  // stripEnd   --> 去除結(jié)尾位置的orld
  StringUtils.strip(str, "aa");
  StringUtils.stripStart(str, "hell");
  StringUtils.stripEnd(str, "orld");


  // 返回字符串在第三次出現(xiàn)A的位置
  StringUtils.ordinalIndexOf(str, "A", 3);


  // 獲取str 開(kāi)始為hello結(jié)尾為orld中間的字符串
  // 注意此方法返回字符串      -->substringBetween
  // 注意此方法返回字符串?dāng)?shù)組(多了個(gè)s) --> substringsBetween
  StringUtils.substringBetween(str, "hell", "orld");
  StringUtils.substringsBetween(str, "hell", "orld");


  // 重復(fù)字符串,第二種重載形式為在重復(fù)中用hahah拼接
  StringUtils.repeat(str, 3);
  StringUtils.repeat(str, "hahah", 2);


  // 統(tǒng)計(jì)參數(shù)2在字符串中出現(xiàn)的次數(shù)
  StringUtils.countMatches(str, "l");


  // 判斷字符串是否全小寫或大寫
  StringUtils.isAllLowerCase(str);
  StringUtils.isAllUpperCase(str);


  // isAlpha        --> 全部由字母組成返回true
  // isNumeric      -->全部由數(shù)字組成返回true
  // isAlphanumeric -->全部由字母或數(shù)字組成返回true
  // isAlphaSpace   -->全部由字母或空格組成返回true
  // isWhitespace   -->全部由空格組成返回true
  StringUtils.isAlpha(str);
  StringUtils.isNumeric(str);
  StringUtils.isAlphanumeric(str);
  StringUtils.isAlphaSpace(str);
  StringUtils.isWhitespace(str);


  // 縮進(jìn)字符串,第二參數(shù)最低為 4,要包含...
  // 現(xiàn)在Hello World輸出為H...
  StringUtils.abbreviate(str, 4);


  // 首字母大寫或小寫
  StringUtils.capitalize(str);
  StringUtils.uncapitalize(str);


  // 將字符串?dāng)?shù)組轉(zhuǎn)變?yōu)橐粋€(gè)字符串,通過(guò)","拼接,支持傳入iterator和collection
  StringUtils.join(new String[] { "Hello", "World" }, ",");

 

  /*
   * 經(jīng)常性要把后臺(tái)的字符串傳遞到前提作為html代碼進(jìn)行解釋,
   * 可以使用以下方法進(jìn)行轉(zhuǎn)換,以下方法輸出為
   * <p>Hello</p>
   */
  StringEscapeUtils.escapeHtml("Hello
");
 }
}

5.DateUtils and DateFormatUtils 
public class TestMain {
 public static void main(String[] args) throws IllegalAccessException {
  Date day1 = new Date();
  /*
   * 由于Aache的DateUtils和DateFormatUtils并沒(méi)有Joda強(qiáng)大,
   *  所以在這里只作簡(jiǎn)單的示例
   */
  
  // 增加一天
  DateUtils.addDays(day1, 1);
  // 減少一年
  DateUtils.addYears(day1, -1);

  // 格式化時(shí)間,第三參數(shù)為國(guó)際化,表示按美國(guó)時(shí)間顯示
  DateFormatUtils.format(day1, "yyyy-MM-dd", Locale.UK);

 }
}


讀者在使用時(shí)可能會(huì)發(fā)現(xiàn),MethodUtils和ConstructUtils在org.apache.commons.lang.reflect和org.apache.commons.beanutils都存在,但FieldUtils和ClassUtils只在reflect當(dāng)中存在,因?yàn)閎eanutils提供了另外一種名為PropertyUtils的對(duì)屬性存取更為方便的工具,但PropertyUtils不能獲取傳統(tǒng)反射的Field對(duì)象,筆者建議MethodUtils和ConstructUtils應(yīng)該傾向使用beanutils,因?yàn)閎eanutils就是為反射而存在,更專業(yè)(雖然提供的方法幾乎一樣),而使用ClassUtils和要獲取傳統(tǒng)的Field對(duì)象時(shí)使用reflect中的FieldUtils 
總結(jié): 
      commons工具包很多開(kāi)源組織都有提供,例如google,spring,apache都有各自的工具包,有眾多的選擇,但最終的目的只是為了方便我們程序的開(kāi)發(fā)和維護(hù),簡(jiǎn)化我們編寫一些常用的邏輯,提升我們開(kāi)發(fā)的效率,從而達(dá)到活在開(kāi)源,善用開(kāi)源 

ps:

Apache Commons是一個(gè)非常有用的工具包,解決各種實(shí)際的通用問(wèn)題,下面是一個(gè)簡(jiǎn)述表,詳細(xì)信息訪問(wèn)http://jakarta.apache.org/commons/index.html

BeanUtils
Commons-BeanUtils 提供對(duì) Java 反射和自省API的包裝

Betwixt
Betwixt提供將 JavaBean 映射至 XML 文檔,以及相反映射的服務(wù).

Chain
Chain 提供實(shí)現(xiàn)組織復(fù)雜的處理流程的“責(zé)任鏈模式”.

CLI
CLI 提供針對(duì)命令行參數(shù),選項(xiàng),選項(xiàng)組,強(qiáng)制選項(xiàng)等的簡(jiǎn)單API.

Codec
Codec 包含一些通用的編碼解碼算法。包括一些語(yǔ)音編碼器, Hex, Base64, 以及URL encoder.

Collections
Commons-Collections 提供一個(gè)類包來(lái)擴(kuò)展和增加標(biāo)準(zhǔn)的 Java Collection框架

Configuration
Commons-Configuration 工具對(duì)各種各式的配置和參考文件提供讀取幫助.

Daemon
一種 unix-daemon-like java 代碼的替代機(jī)制

DBCP
Commons-DBCP 提供數(shù)據(jù)庫(kù)連接池服務(wù)

DbUtils
DbUtils 是一個(gè) JDBC helper 類庫(kù),完成數(shù)據(jù)庫(kù)任務(wù)的簡(jiǎn)單的資源清除代碼.

Digester
Commons-Digester 是一個(gè) XML-Java對(duì)象的映射工具,用于解析 XML配置文件.

Discovery
Commons-Discovery 提供工具來(lái)定位資源 (包括類) ,通過(guò)使用各種模式來(lái)映射服務(wù)/引用名稱和資源名稱。.

EL
Commons-EL 提供在JSP2.0規(guī)范中定義的EL表達(dá)式的解釋器.

FileUpload
FileUpload 使得在你可以在應(yīng)用和Servlet中容易的加入強(qiáng)大和高性能的文件上傳能力

HttpClient
Commons-HttpClient 提供了可以工作于HTTP協(xié)議客戶端的一個(gè)框架.

IO
IO 是一個(gè) I/O 工具集

Jelly
Jelly是一個(gè)基于 XML 的腳本和處理引擎。 Jelly 借鑒了 JSP 定指標(biāo)簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優(yōu)點(diǎn)。Jelly 可以用在命令行, Ant 或者 Servlet之中。

Jexl
Jexl是一個(gè)表達(dá)式語(yǔ)言,通過(guò)借鑒來(lái)自于Velocity的經(jīng)驗(yàn)擴(kuò)展了JSTL定義的表達(dá)式語(yǔ)言。.

JXPath
Commons-JXPath 提供了使用Xpath語(yǔ)法操縱符合Java類命名規(guī)范的 JavaBeans的工具。也支持 maps, DOM 和其他對(duì)象模型。.

Lang
Commons-Lang 提供了許多許多通用的工具類集,提供了一些java.lang中類的擴(kuò)展功能

Latka
Commons-Latka 是一個(gè)HTTP 功能測(cè)試包,用于自動(dòng)化的QA,驗(yàn)收和衰減測(cè)試.

Launcher
Launcher 組件是一個(gè)交叉平臺(tái)的Java 應(yīng)用載入器。 Commons-launcher 消除了需要批處理或者Shell腳本來(lái)載入Java 類。.原始的 Java 類來(lái)自于Jakarta Tomcat 4.0 項(xiàng)目

Logging
Commons-Logging 是一個(gè)各種 logging API實(shí)現(xiàn)的包裹類.

Math
Math 是一個(gè)輕量的,自包含的數(shù)學(xué)和統(tǒng)計(jì)組件,解決了許多非常通用但沒(méi)有及時(shí)出現(xiàn)在Java標(biāo)準(zhǔn)語(yǔ)言中的實(shí)踐問(wèn)題.

Modeler
Commons-Modeler 提供了建模兼容JMX規(guī)范的 Mbean的機(jī)制.

Net
Net 是一個(gè)網(wǎng)絡(luò)工具集,基于 NetComponents 代碼,包括 FTP 客戶端等等。

Pool
Commons-Pool 提供了通用對(duì)象池接口,一個(gè)用于創(chuàng)建模塊化對(duì)象池的工具包,以及通常的對(duì)象池實(shí)現(xiàn).

Primitives
Commons-Primitives提供了一個(gè)更小,更快和更易使用的對(duì)Java基本類型的支持。當(dāng)前主要是針對(duì)基本類型的 collection。.

Validator
The commons-validator提供了一個(gè)簡(jiǎn)單的,可擴(kuò)展的框架來(lái)在一個(gè)XML文件中定義校驗(yàn)器 (校驗(yàn)方法)和校驗(yàn)規(guī)則。支持校驗(yàn)規(guī)則的和錯(cuò)誤消息的國(guó)際化。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
《Jakarta commons cookbook》學(xué)習(xí)筆記
NumberUtils、ArrayUtils和RandomUtils工具類用法
commons-lang
看例子練apache commons之lang篇
StringUtils簡(jiǎn)介
apache commons
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服