一、泛型類
定義person類
package cn.itcast.p2.bean;
public class person implements comparable
public person(string name, int age)
public int compareto(person p)
@override
public int hashcode()
@override
public boolean equals(object obj) else if (!name.equals(other.name))
return false;
return true;
} public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
@override
public string tostring()
}
定義student類
package cn.itcast.p2.bean;
public class student extends person
public student(string name, int age)
@override
public string tostring()
}
定義student類
package cn.itcast.p2.bean;
public class student extends person
public student(string name, int age)
@override
public string tostring()
}
定義乙個工具類,將工具類中所有的引數型別全部定義為object 型別,這樣所有型別的資料就都能傳遞進來。這就是泛型類。
public class tool
public void setobject(object object)
}
操作泛型類
package cn.itcast.p4.generic.define.demo;
import cn.itcast.p2.bean.student;
import cn.itcast.p2.bean.worker;
public class genericdefinedemo3
}
傳入student 物件以後編譯通過,執行無問題。
當傳入worker物件以後編譯通過,但是執行出現問題。
這是因為迭代的型別是student型別。
把 student student =(student)tool.getobejct(); 換成object student=(obejct)tool.getobject()以後執行就沒有問題了。
在jdk 1.5以後使用泛型來接收類中要操作的引用資料型別。
泛型類什麼時候用? 當類中操作的引用資料型別不確定資料型別的時候,就用泛型l來表示。
定義乙個泛型類
public class tool
public void setobject(qq object)
/*** 將泛型定義在方法上。
* @param str
public void show(w str)
public void print(qq str)
/*** 當方法靜態時,不能訪問類上定義的泛型。如果靜態方法使用泛型,
* 只能將泛型定義在方法上。
* @param obj
*/public static void method(y obj)
}
傳遞乙個student 物件 編譯通過。
傳遞乙個worker() 物件時,編譯就不能通過了。
這是因為定義了泛型。 工具類物件的型別是student 。worker和student 型別不匹配。編譯報錯。
再一次驗證了泛型將執行時的異常放到了編譯時。提高了程式的安全性。
二、泛型方法
重新寫乙個工具類,定義一些泛型『類』
public class tool
public void setobject(qq object)
/*** 將泛型定義在方法上。可以傳遞任意型別物件
* @param str
*/public void show(w str)
public void print(qq str)
/*** 當方法靜態時,不能訪問類上定義的泛型。如果靜態方法使用泛型,
* 只能將泛型定義在方法上。
* @param obj
*//**
* 當方法靜態時,不能訪問類上定義的泛型,因為靜態不需要物件可以用類名直接訪問。
* @param obj
*/// public static void method2(qq obj)
*** 當泛型宣告在方法上時,必須放在修飾符的後面,返回值的前面。
* * @param obj
*/public static void method(y obj)
}
使用泛型類
package cn.itcast.p4.generic.define.demo;
public class genericdefinedemo4
}
結果輸出
三、泛型介面
package cn.itcast.p4.generic.define.demo;
public class genericdefinedemo5
}//泛型介面,將泛型定義在介面上。
inte***ce inter
/** *
* 第二種實現 傳入q 任意型別的引數
* @author administrator
* * @param */
class interimpl2implements inter
}/**
* 第一種實現,傳入字串
泛型類,泛型方法,泛型介面
泛型,就是一種不確定的資料型別。如果在類後面加上 這個類就變成了泛型類。這個 t可以使用任意的字母代替。表示定義了一種不確定的資料型別,這種不確定的資料型別必須在使用這個類 比如建立物件 的時候才能確定下來。如果希望縮小泛型的範圍,延後泛型的確定時間,讓泛型在呼叫方法的時候確定,那麼我們可以使用泛型...
Dart 中泛型 泛型方法 泛型類 泛型介面
泛型就是解決類 介面 方法的復用性以及對不特定資料的支援 void main 定義乙個泛型方法 t printdata t value running dart users zhoujian dartdemo demo.dart 2zhoujian done exited with code 0 i...
泛型 泛型類 泛型方法 泛型擦除
1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...