40_自定义泛型方法及其应用
生活随笔
收集整理的這篇文章主要介紹了
40_自定义泛型方法及其应用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
java的泛型不同于C++的模板方法那么強(qiáng)大。java的泛型只停留在編譯階段,編譯通過(guò)后泛型特征被擦除,主要因?yàn)楸WCjvm的效率。
?
- 用泛型知識(shí),寫(xiě)一個(gè)交換數(shù)組元素的方法(此方法只適合于引用類(lèi)型數(shù)組!因?yàn)閕nt[]不會(huì)自動(dòng)轉(zhuǎn)為Integer[]!)
?
private static <T> void swap(T[] a,int i,int j){ T tmp=a[i]; a[i]=a[j]; a[j]=tmp; }String[] arr=new String[]{"123","789","456"}; //打印出123789456 for(String s:arr){ System.out.print(s); } swap(arr,1,2); System.out.println(); //打印出123456789 for(String s:arr){ System.out.print(s); }?
注意:
2.? T[]可以接收的實(shí)參類(lèi)型---引用類(lèi)型
若基本類(lèi)型數(shù)組,會(huì)報(bào)錯(cuò)。如 swap(new int[3],1,2); 會(huì)報(bào)錯(cuò)!
?
?
普通方法,構(gòu)造方法,靜態(tài)方法中都可以使用泛型。
也可以用類(lèi)型變量表示異常,稱(chēng)為參數(shù)化的異常,可以用于方法的throws列表中,但是不能用于catch子句中。
private static <T extends Exception> sayHello()throws T{try{}catch(Exception e){throw (T)e;}}補(bǔ)充反射:
String[] arr=new String[]{"123","789","456"}; System.out.println(arr.getClass().getName());//[Ljava.lang.String; System.out.println("abc".getClass().getName());//java.lang.Stringint[] arr2=new int[]{1,3,2}; System.out.println(arr2.getClass().getName());//[I System.out.println(int.class.getName());//int Integer[] arr3=new Integer[]{1,3,2}; System.out.println(arr3.getClass().getName());//[Ljava.lang.Integer; System.out.println(Integer.class.getName());//java.lang.Integer轉(zhuǎn)載于:https://www.cnblogs.com/qq-757617012/p/4271863.html
總結(jié)
以上是生活随笔為你收集整理的40_自定义泛型方法及其应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下解压tgz文件(转载)
- 下一篇: 老子《道德经》第三十五章