为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Java代码 [url=]
![](https://i-blog.csdnimg.cn/blog_migrate/0ffdd7308f8432574f61d66dd98afdd5.png)
- Student{
- Student(){
- System.out.println("I'm a student.....");
- }
- }
有一个老师类
Java代码 [url=]
![](https://i-blog.csdnimg.cn/blog_migrate/0ffdd7308f8432574f61d66dd98afdd5.png)
- Teacher{
- Teacher(){
- System.out.println("I'm a teacher.....");
- }
- }
定义一个泛型类Utils<Kind>
Java代码 [url=]![](https://i-blog.csdnimg.cn/blog_migrate/0ffdd7308f8432574f61d66dd98afdd5.png)
- class Utils<Kind>
- {
- private Kind k;
- public void setObject(Kind k){
- this.k=k;
- }
- public Kind getObject(){
- return k;
- }
- }
public 主类
Java代码 [url=]![](https://i-blog.csdnimg.cn/blog_migrate/0ffdd7308f8432574f61d66dd98afdd5.png)
- public class GenericDemo{
- public static void main(){
- Uitls<Teacher> ut=new Utils<Teacher>();//两个泛型类,分别给定
- Utils<Student> us=new Utils<Student>();//Teacher类和Student类
- ut.setObject(new Teacher());
- Teacher teacher=ut.getObject();//编译运行都通过
- //输出 I‘m a teacher。。。
- us.setObject(new Student());
- Student student=us.getObject();//编译运行都通过
- //输出 I‘m a Student。。。
- ut.setObject(new Student());
- Teacher teacher=ut.getObject();//直接出现异常ClassCastException,编译出错
- }
- }