Java高级 —— 泛型
生活随笔
收集整理的這篇文章主要介紹了
Java高级 —— 泛型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 泛型概念
- 泛型可設置多個類型參數
- 泛型繼承
- 泛型接口
- 限制泛型可用類型
- 泛型通配聲明
- 泛型方法
- 泛型方法限制泛型可用類型
泛型概念
- 問題引入:如果我們需要產生多個對象,每個對象的邏輯完全一樣,只是對象內的成員啊變量的類型不同。那我們如何去做?兩種解決辦法:
方法一:
方法二:
class Cls1 {Object a;//Object是所有數據類型的父類public Cls1(Object a){//構造方法this.a = a;}public Object getData(){return a;} }public class test {public static void main(String[] args) {Cls1 cls1 = new Cls1(10); //1.5版本以下運行出錯,詢問回復int不是類,是數據類型,String是類System.out.println(cls1.getData());//Integer才是類Cls1 cls2 = new Cls1("你好呀!");System.out.println(cls2.getData());//System.out.println((int)cls2.getData());這樣強制轉換 編譯通過但運行出錯!ppt有講}}這里可以使用泛型的解決方法:
創建工程時選擇1.5版本JDK及以上
泛型可設置多個類型參數
上述泛型類特點第二點的例子:
class Cls1<T> {T a;public Cls1(T a){//構造方法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());}}運行結果:
10 你好呀! 100 好熱!泛型繼承
abstract class Cls1<T>//抽象類不能實例化(不能new) {T a;public Cls1(T a){//構造方法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,"好熱!");//抽象類不能進行實例化(Cls1不能new)cls.printInfo();}}泛型接口
abstract class Cls1<T>//抽象類 {T a;public Cls1(T a){//構造方法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,"好熱!");//抽象類不能進行初始化cls.printInfo();cls.printInfoInCls3(100);}}運行結果:
輸出 100限制泛型可用類型
默認使用:
實現某個接口:
interface move //接口 {abstract void printInfoInCls3(); }abstract class Cls1<T extends move>//不用implements { ... }泛型通配聲明
泛型方法
例子:
運行結果:
哈哈 1234 0.5 a泛型方法限制泛型可用類型
總結
以上是生活随笔為你收集整理的Java高级 —— 泛型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腕能助手android9,腕间应用助手(
- 下一篇: jquery的鼠标移入移出事件hover