泛型的由来
- A:案例演示
- 泛型的由来:通过Object转型问题引入
- 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。
- 也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
package com.heima.bean;
public class Tool {
private Object obj;
public Object getObj() {
return obj;
}
public void setObj(Object obj) {
this.obj = obj;
}
}
package com.heima.bean;
public class Student extends Person {
public Student() {
}
public Student(String name, int age) {
super(name, age);
}
}
package com.heima.bean;
public class Worker extends Person {
public Worker() {
}
public Worker(String name, int age) {
super(name, age);
}
}
package com.heima.generic;
import com.heima.bean.Student;
import com.heima.bean.Tool;
import com.heima.bean.Worker;
public class Demo03_Generic {
/**
* A:案例演示
* 泛型的由来:通过Object转型问题引入
* 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。
* 也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
*/
public static void main(String[] args) {
//泛型就是种瓜得挂,种豆得豆的意思.
//这里你传入一个Student,却用一个Worker接收
//那样就会出现类型转换的异常.
Tool t = new Tool(); //创建工具类对象
t.setObj(new Student("张三", 23));
//Exception in thread "main" java.lang.ClassCastException:
//com.heima.bean.Student cannot be cast to com.heima.bean.Worker
Worker w = (Worker)t.getObj(); //向下转型
System.out.println(w);
}
}