柚子快報(bào)邀請(qǐng)碼778899分享:開(kāi)發(fā)語(yǔ)言 Java 泛型
柚子快報(bào)邀請(qǐng)碼778899分享:開(kāi)發(fā)語(yǔ)言 Java 泛型
?
一,3種泛型方式:泛型類(lèi)、泛型接口、泛型方法
泛型類(lèi)
//此處T可以隨便寫(xiě)為任意標(biāo)識(shí),常見(jiàn)的如T、E、K、V等形式的參數(shù)常用于表示泛型
//在實(shí)例化泛型類(lèi)時(shí),必須指定T的具體類(lèi)型
public class Generic
? ? private T key;
????public Generic(T key) {
????????this.key = key;
????}
????public T getKey(){
????????return key;
????}
}
泛型接口
public interface Generator
????public T next();
}
// 實(shí)現(xiàn)泛型接口時(shí),可以傳入或者不傳實(shí)際類(lèi)型:
public class FruitGenerator
public class FruitGenerator implements Generator
泛型方法
// 只有聲明了
// 此處T可以隨便寫(xiě)為任意標(biāo)識(shí),常見(jiàn)的如T、E、K、V等形式的參數(shù)常用于表示泛型
public
T instance = tClass.newInstance();
return instance;
}
靜態(tài)方法要使用泛型的話(huà),必須將靜態(tài)方法也定義成泛型方法?
public class StaticGenerator
????public static
????}
}
泛型方法中添加上下邊界的時(shí)候,必須在權(quán)限聲明與返回值之間的
// 編譯器會(huì)報(bào)錯(cuò)
public
public
????System.out.println("container key :" + container.getKey());
????T test = container.getKey();
????return test;
}
? ? ? ? ? ? ? ? ? ?
二,Tips
1,類(lèi)型擦除:泛型類(lèi)型只在編譯階段有效。
2,不能創(chuàng)建一個(gè)確切類(lèi)型的泛型數(shù)組,而使用通配符?是可以的。
[?] List
new
ArrayList
[?] List>[] ls =
new ArrayList>[10];
[?] List
new
ArrayList[10];
3,無(wú)法對(duì)泛型代碼直接使用
instanceof
關(guān)鍵字,而使用通配符?是可以的。
[?]
list??
instanceof??
ArrayList
[?]?
list
instanceof
ArrayList>
4,注意兩種繼承情況
① 第一種
public void showKeyValue(Generic
????Log.d("泛型測(cè)試","key value is " + obj.getKey());
}
Generic
Generic
[?] showKeyValue(gNumber);
[?] showKeyValue(gInteger); //編譯報(bào)錯(cuò)
② 第二種
class Fruit {
????@Override
????public String toString() {
????????return "fruit";
????}
}
class Apple extends Fruit {
????@Override
????public String toString() {
????????return "apple";
????}
}
class GenerateTest
????public void show_1(T t) {
????????System.out.println(t.toString());
????}
}
public static void main(String[] args) {
????Apple apple = new Apple();
????GenerateTest
????//apple是Fruit的子類(lèi),所以這里可以
?? ?[?]generateTest.show_1(apple);
}? ??
柚子快報(bào)邀請(qǐng)碼778899分享:開(kāi)發(fā)語(yǔ)言 Java 泛型
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。