泛型
泛型:在類定義時不指定類中的具體資料型別,而是用識別符號來替代,在外部呼叫時自己指定其型別,提升了代碼的靈活性,
1. 泛型的應用
public class Generics_0117<Y,M,D> {
public Y getYear() {
return year;
}
public void setYear(Y year) {
this.year = year;
}
public M getMonth() {
return month;
}
public void setMonth(M month) {
this.month = month;
}
public D getDay() {
return day;
}
public void setDay(D day) {
this.day = day;
}
private Y year;
private M month;
private D day;
}
public class Test {
public static void main(String[] args) {
Generics_0117<Integer,Integer,Float> time = new Generics_0117();//自定義型別
time.setYear(2021);
time.setMonth(01);
time.setDay(0.5f);
System.out.println("現在時間:"+time.getYear()+"年"+time.getMonth()+"月"+time.getDay()+"日");
}
}
2.泛型的通配符
在方法的引數泛型不明確的時候可以用"?"去代替
public class Test {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList();
arrayList.add(1);
ArrayList<String> arrayList1 = new ArrayList();
arrayList1.add("你好");
data(arrayList);
data(arrayList1);
}
public static void data(ArrayList<?> list){
System.out.println(list);
}
}
3.泛型的上限與下限
上限:表示實體化的具體資料型別可以是上限資料型別的子類或上限本身
使用方法:類名<? extends 上限類名>
下限:表示實體化的具體資料型別可以是下限父類或下限本身
使用方法:類名<? super 下限類名>
public class Data<T> {
public static void main(String[] args) {
//上限
test1(new Data<Number>());
test1(new Data<Integer>());
test1(new Data<Double>());
//下限
test2(new Data<String>());
test2(new Data<Object>());
}
public static void test1(Data<? extends Number> data){
}
public static void test2(Data<? super String> data){
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250138.html
標籤:其他
上一篇:寒假不想荒廢,先復習C語言吧!
