五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

java泛型通配符的用法

2022-07-16 10:08 作者:虛云幻仙  | 我要投稿

/**
* 泛型中通配符的使用 無界通配符? 通配符的上限限定和下限限定
*/

public class Test7<T> {
? ?private T value;
? ?public Test7(T v){
? ? ? ?this.value = v;
? ?}
? ?public void printValue(){
? ? ? ?System.out.println(value);
? ?}
? ?//定義一個泛型類 通過類的T設定了value的類型
? ?public static void main(String[] args) {
? ? ? ?Test7<Integer> i7 = new Test7<>(7);
? ? ? ?i7.printValue();
? ? ? ?//調(diào)用類內(nèi)定義好的方法使用 T value
? ?}
}

class ShowValue{
// ? ?public void printValue(Test7 t){
// ? ? ? ?//當在外部調(diào)用Test7時需要設定具體的類型 如果不設定會默認為Object
// ? ?}
// ? ?public void printValue(Test7<Integer> t){
// ? ? ? ?//如果設定為Integer 當需要調(diào)用Test7<String>等其他類型的對象時會無法使用該方法
// ? ?}

? ?public void printValue(Test7<?> t){
? ? ? ?//通過無界通配符? 來代表任意類型的Test7<> 無論什么類型都可以調(diào)用這個方法
? ? ? ?t.printValue();
? ?}

? ?public static void main(String[] args) {
? ? ? ?Test7<Integer> i7 = new Test7<>(7);
? ? ? ?Test7<String> s7 = new Test7<>("7");
? ? ? ?ShowValue s = new ShowValue();
? ? ? ?s.printValue(i7);
? ? ? ?s.printValue(s7);
? ? ? ?//i7和s7都符合Test7<?>
? ? ? ?Test7<?> t7 = i7;
? ? ? ?//引用變量也可以用<?>
? ? ? ?Test7<?> o8 = new Test7<>("");
// ? ? ? ?Test7<Integer> i8 = t7; ?報錯 需要強轉
? ?}
}

class ShowValue2{
? ?public void printValue(Test7<? extends Number> t){
? ? ? ?//可以對通配符的適用范圍進行限定
? ? ? ?//格式 ?<通配符 extends 類名/接口名>
? ? ? ?//將繼承樹中的上限設定為Number 所有Number的子類包括Number都可以使用該方法 其他與Number無關的類無法調(diào)用

? ? ? ?t.printValue();
? ?}

? ?public static void main(String[] args) {
? ? ? ?Test7<Object> o7 = new Test7<>(new Object());
? ? ? ?ShowValue2 s2 = new ShowValue2();
// ? ? ? ?s2.printValue(o7);報錯 在繼承樹中Object在Number的上面 超過了通配符的上限
? ? ? ?Test7<String> s7 = new Test7<>("");
// ? ? ? ?s2.printValue(s7);報錯 String不是Number的子類 無法調(diào)用方法
? ?}
}

class Test8<T extends String>{
? ?//定義泛型類/泛型接口和泛型方法時也可以通過extends限定適用范圍
? ?<T extends Number> void a(){}
}

class Test9{
? ?public void a(Test7<? super Integer> i){}
? ?//super用來限定通配符的下限 在繼承樹中Integer及Integer的父類可以使用該方法
? ?Test7<? super Integer> flag;
? ?//給屬性設定下限 super和extends用法一樣 但super只能用于?通配符
}
//class Test10<?> {} 報錯 ?不能用在泛型類上 所以super也不能用在泛型類上
//泛型不能同時定義上限和下限

java泛型通配符的用法的評論 (共 條)

分享到微博請遵守國家法律
彭泽县| 渭南市| 同仁县| 嘉兴市| 郴州市| 和林格尔县| 齐河县| 开封市| 焦作市| 全南县| 营口市| 郁南县| 仙桃市| 淮北市| 三河市| 同仁县| 衢州市| 克东县| 屏边| 通江县| 孟津县| 拜泉县| 元阳县| 合山市| 如东县| 莎车县| 固始县| 鄂尔多斯市| 多伦县| 荥经县| 东乌珠穆沁旗| 凌海市| 镇康县| 丽水市| 琼结县| 阿城市| 遂溪县| 门头沟区| 潢川县| 尼木县| 平陆县|