日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

2021-11-14泛型

發(fā)布時(shí)間:2025/3/13 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021-11-14泛型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.泛型的概念

2.使用泛型的好處

Demo01Generic.java

package Generic;import java.util.ArrayList; import java.util.Iterator;public class Demo01Generic {public static void main(String[] args) {/** 創(chuàng)建集合對(duì)象,不使用泛型* 好處:* 集合不使用泛型。默認(rèn)的類型就是Object類型,可以存儲(chǔ)任意類型的數(shù)據(jù)* 弊端:* 不安全,會(huì)引發(fā)異常** */ArrayList list = new ArrayList();list.add("abc");list.add(1);//使用迭代器遍歷集合Iterator it = list.iterator();while (it.hasNext()){Object o = it.next();System.out.println(o);//想要使用String類特有的方法,length獲取字符串的長(zhǎng)度,不能使用 多態(tài) Object obj = "abc"//需要向下轉(zhuǎn)型 // String s = (String) o; // System.out.println(s.length());//ClassCastException類型轉(zhuǎn)換異常//abc//3//1}/** 創(chuàng)建集合對(duì)象,使用泛型* 好處:* 1.避免了類型轉(zhuǎn)換的麻煩,存儲(chǔ)的是什么類型,取出的就是什么類型* 2.把運(yùn)行期異常(代碼運(yùn)行之后拋出的異常)提升到了編譯期(寫(xiě)代碼的時(shí)候會(huì)報(bào)錯(cuò))* 弊端:* 泛型是什么類型,只能存儲(chǔ)什么類型的數(shù)據(jù)** */ArrayList<String> list1 = new ArrayList<>();list1.add("zz");//list1.add(1);放不進(jìn)去Iterator<String> it1 = list1.iterator();while (it1.hasNext()) {String s1 = it1.next();System.out.println(s1);}} }

3.泛型的定義和使用

4.定義和使用泛型的方法

Demo03GenericMethod.java

package Generic; /* * 定義含有泛型的方法:泛型定義在方法的修飾符和返回值類型之間 * 格式: * 修飾符 <泛型> 返回值類型 方法名(參數(shù)列表(使用泛型)) { * 方法體; * } * 含有泛型的方法,在調(diào)用方法的時(shí)候確定泛型的數(shù)據(jù)類型 * 傳遞什么類型的參數(shù),泛型就是什么類型。 * */ public class Demo03GenericMethod {public <M> void method1(M m) {System.out.println(m);}public static <S> void method2(S s) {System.out.println(s);} }

Demo03Main.java

package Generic; //測(cè)試含有泛型的方法 public class Demo03Main {public static void main(String[] args) {Demo03GenericMethod gc = new Demo03GenericMethod();gc.method1(1);gc.method2("靜態(tài)方法,不建議創(chuàng)建對(duì)象使用");//靜態(tài)方法,通過(guò)類名.方法名(參數(shù))可以直接使用Demo03GenericMethod.method2("hh");} }

5.定義和使用含有泛型的接口

GenericInterface.java

package Generic; //定義含有泛型的接口 public interface GenericInterface<I> {public abstract void method(I i); }

GenericInterfaceImpl1.java

package Generic; /* * 含有泛型的接口,第一種使用方式:定義接口的實(shí)現(xiàn)類,實(shí)現(xiàn)接口,指定接口的泛型 * */ public class GenericInterfaceImpl1 implements GenericInterface<String>{@Overridepublic void method(String s) {System.out.println(s);} }

GenericInterfaceImpl2.java

package Generic; /* * 含有泛型的接口的第二種使用方式:接口使用什么泛型,實(shí)現(xiàn)類就使用什么泛型,類跟著接口走 * 這相當(dāng)于定義了一個(gè)含有泛型的類,創(chuàng)建對(duì)象的時(shí)候確定泛型的類型 * */ public class GenericInterfaceImpl2<I> implements GenericInterface<I>{@Overridepublic void method(I e) {System.out.println(e);} }

Demo04GenericInterface.java

package Generic; //測(cè)試含有泛型的接口 public class Demo04GenericInterface {public static void main(String[] args) {GenericInterfaceImpl1 genericInterfaceImpl1 = new GenericInterfaceImpl1();genericInterfaceImpl1.method("hh");//hhGenericInterfaceImpl2 genericInterfaceImpl2 = new GenericInterfaceImpl2();genericInterfaceImpl2.method(12);//12} }

6.泛型的通配符


Demo05Generic.java

package Generic;import java.util.ArrayList; import java.util.Iterator;public class Demo05Generic {public static void main(String[] args) {ArrayList<Integer> list01 = new ArrayList<>();list01.add(1);list01.add(2);ArrayList<String> list02 = new ArrayList<>();list02.add("a");list02.add("b");printArray(list01);printArray(list02);}/** 定義一個(gè)方法,能遍歷所有類型的ArrayList集合* 這時(shí)候我們不知道ArrayList集合使用什么數(shù)據(jù)類型,可以使用泛型的通配符?來(lái)接收數(shù)據(jù)類型* */public static void printArray(ArrayList<?> list){//使用迭代器遍歷集合Iterator<?> it = list.iterator();while (it.hasNext()){System.out.println(it.next());}} }



總結(jié)

以上是生活随笔為你收集整理的2021-11-14泛型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。