最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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泛型通配符的用法的評論 (共 條)

分享到微博請遵守國家法律
揭东县| 静宁县| 双流县| 平武县| 景东| 榆中县| 庆阳市| 西宁市| 紫云| 迭部县| 垦利县| 延吉市| 贵溪市| 洪泽县| 徐水县| 亚东县| 花垣县| 蕲春县| 崇州市| 东辽县| 辽阳市| 高台县| 襄汾县| 蒙自县| 望城县| 巩义市| 旌德县| 加查县| 沂水县| 海宁市| 瑞丽市| 双辽市| 肥西县| 女性| 荆州市| 抚远县| 东莞市| 石门县| 长丰县| 义乌市| 从化市|