2021-11-14泛型
生活随笔
收集整理的這篇文章主要介紹了
2021-11-14泛型
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
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)建集合對象,不使用泛型* 好處:* 集合不使用泛型。默認的類型就是Object類型,可以存儲任意類型的數(shù)據(jù)* 弊端:* 不安全,會引發(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獲取字符串的長度,不能使用 多態(tài) Object obj = "abc"//需要向下轉(zhuǎn)型 // String s = (String) o; // System.out.println(s.length());//ClassCastException類型轉(zhuǎn)換異常//abc//3//1}/** 創(chuàng)建集合對象,使用泛型* 好處:* 1.避免了類型轉(zhuǎn)換的麻煩,存儲的是什么類型,取出的就是什么類型* 2.把運行期異常(代碼運行之后拋出的異常)提升到了編譯期(寫代碼的時候會報錯)* 弊端:* 泛型是什么類型,只能存儲什么類型的數(shù)據(jù)** */ArrayList<String> list1 = new ArrayList<>();list1.add("zz");//list1.add(1);放不進去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ù)據(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; //測試含有泛型的方法 public class Demo03Main {public static void main(String[] args) {Demo03GenericMethod gc = new Demo03GenericMethod();gc.method1(1);gc.method2("靜態(tài)方法,不建議創(chuàng)建對象使用");//靜態(tài)方法,通過類名.方法名(參數(shù))可以直接使用Demo03GenericMethod.method2("hh");} }5.定義和使用含有泛型的接口
GenericInterface.java
package Generic; //定義含有泛型的接口 public interface GenericInterface<I> {public abstract void method(I i); }GenericInterfaceImpl1.java
package Generic; /* * 含有泛型的接口,第一種使用方式:定義接口的實現(xiàn)類,實現(xiàn)接口,指定接口的泛型 * */ public class GenericInterfaceImpl1 implements GenericInterface<String>{@Overridepublic void method(String s) {System.out.println(s);} }GenericInterfaceImpl2.java
package Generic; /* * 含有泛型的接口的第二種使用方式:接口使用什么泛型,實現(xiàn)類就使用什么泛型,類跟著接口走 * 這相當于定義了一個含有泛型的類,創(chuàng)建對象的時候確定泛型的類型 * */ public class GenericInterfaceImpl2<I> implements GenericInterface<I>{@Overridepublic void method(I e) {System.out.println(e);} }Demo04GenericInterface.java
package Generic; //測試含有泛型的接口 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
總結(jié)
以上是生活随笔為你收集整理的2021-11-14泛型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-11-14Iterator迭代
- 下一篇: 2021-11-16数据结构