Java高级 —— 泛型
生活随笔
收集整理的這篇文章主要介紹了
Java高级 —— 泛型
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 泛型概念
- 泛型可設(shè)置多個(gè)類型參數(shù)
- 泛型繼承
- 泛型接口
- 限制泛型可用類型
- 泛型通配聲明
- 泛型方法
- 泛型方法限制泛型可用類型
泛型概念
- 問題引入:如果我們需要產(chǎn)生多個(gè)對象,每個(gè)對象的邏輯完全一樣,只是對象內(nèi)的成員啊變量的類型不同。那我們?nèi)绾稳プ?#xff1f;兩種解決辦法:
方法一:
方法二:
class Cls1 {Object a;//Object是所有數(shù)據(jù)類型的父類public Cls1(Object a){//構(gòu)造方法this.a = a;}public Object getData(){return a;} }public class test {public static void main(String[] args) {Cls1 cls1 = new Cls1(10); //1.5版本以下運(yùn)行出錯(cuò),詢問回復(fù)int不是類,是數(shù)據(jù)類型,String是類System.out.println(cls1.getData());//Integer才是類Cls1 cls2 = new Cls1("你好呀!");System.out.println(cls2.getData());//System.out.println((int)cls2.getData());這樣強(qiáng)制轉(zhuǎn)換 編譯通過但運(yùn)行出錯(cuò)!ppt有講}}這里可以使用泛型的解決方法:
創(chuàng)建工程時(shí)選擇1.5版本JDK及以上
泛型可設(shè)置多個(gè)類型參數(shù)
上述泛型類特點(diǎn)第二點(diǎn)的例子:
class Cls1<T> {T a;public Cls1(T a){//構(gòu)造方法this.a = a;}public T getData(){return a;} }class Cls2<T,T2> {T a;T2 b;public Cls2(T a,T2 b){this.a = a;this.b = b;}public T getData(){return a;}public T2 getData2(){return b;} }public class test {public static void main(String[] args) {Cls1<Integer> cls1 = new Cls1<Integer>(10);System.out.println(cls1.getData());Cls1<String> cls2 = new Cls1<String>("你好呀!");System.out.println(cls2.getData());Cls2<Integer,String> cls3 = new Cls2<Integer,String>(100,"好熱!");System.out.println(cls3.getData());System.out.println(cls3.getData2());}}運(yùn)行結(jié)果:
10 你好呀! 100 好熱!泛型繼承
abstract class Cls1<T>//抽象類不能實(shí)例化(不能new) {T a;public Cls1(T a){//構(gòu)造方法this.a = a;}public T getData(){return a;}abstract void printInfo(); }class Cls2<T,T2> extends Cls1<T> {T2 b;public Cls2(T a,T2 b){super(a);this.b = b;}public T2 getData2(){return b;}void printInfo(){System.out.println("輸出");} }public class test {public static void main(String[] args) {Cls2<Integer,String> cls = new Cls2<Integer,String>(100,"好熱!");//抽象類不能進(jìn)行實(shí)例化(Cls1不能new)cls.printInfo();}}泛型接口
abstract class Cls1<T>//抽象類 {T a;public Cls1(T a){//構(gòu)造方法this.a = a;}public T getData(){return a;}abstract void printInfo(); }interface cls3<T> //接口 {abstract void printInfoInCls3(T t); }class Cls2<T,T2> extends Cls1<T> implements cls3<T> {T2 b;public Cls2(T a,T2 b){super(a);this.b = b;}public T2 getData2(){return b;}void printInfo(){System.out.println("輸出");}public void printInfoInCls3(T t) {// TODO Auto-generated method stubSystem.out.println(t);} }public class test {public static void main(String[] args) {Cls2<Integer,String> cls = new Cls2<Integer,String>(100,"好熱!");//抽象類不能進(jìn)行初始化cls.printInfo();cls.printInfoInCls3(100);}}運(yùn)行結(jié)果:
輸出 100限制泛型可用類型
默認(rèn)使用:
實(shí)現(xiàn)某個(gè)接口:
interface move //接口 {abstract void printInfoInCls3(); }abstract class Cls1<T extends move>//不用implements { ... }泛型通配聲明
泛型方法
例子:
運(yùn)行結(jié)果:
哈哈 1234 0.5 a泛型方法限制泛型可用類型
總結(jié)
以上是生活随笔為你收集整理的Java高级 —— 泛型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腕能助手android9,腕间应用助手(
- 下一篇: 序列化与反序列化(1)Serializa