您的位置:首页 > 其它

泛型的演化

2016-03-30 21:19 337 查看
public class demo1 {
public static void main(String[] args){
ex1 ex1= new ex1("志强Bana");
System.out.println(ex1.getdate());
ex2 ex2 =new ex2(24);
System.out.println(ex2.getDate());
}
}
class ex1{
private String date;
public ex1(String date){
this.date=date;
}
public void setdate(String date){
this.date=date;
}
public String getdate(){
return date;
}
}
class ex2{
private int date;
public ex2(int date){
this.date=date;
}
public void setDate(int date) {
this.date = date;
}
public int getDate() {
return date;
}
}

以上代码的缺点:创建不同的类型的类,导致类膨胀,重用性太差

public class demo2 {
public static void main(String[] args){
ex ex1 =new ex("志强Bana");
System.out.println((String)ex1.getdate());
ex ex2 =new ex("24");
System.out.println((String)ex2.getdate());
}
}
class ex{
private Object date;
public ex(Object date){
this.date=date;
}

public void setdate(Object date){
this.date=date;
}
public Object getdate(){
return date;
}
}

以上代码是运用Object是所有类型的父类,可以接受任何类型,解决了类的膨胀问题。但是缺点:编译正常,运行课程产生异常。

public class demo3 {
public static void main(String[] args){
fanxing<String> fx= new fanxing<String>();
fx.setdate("志强Bana");
System.out.println(fx.getdate());

fanxing<Integer> fx1= new fanxing<Integer>();
fx1.setdate(24);
System.out.println(fx1.getdate());
}
}
//创建泛型类
class  fanxing <T>{
private T date;
public fanxing(T date){
this.date=date;
}
public fanxing() {
// TODO 自动生成构造函数存根
}
public void setdate(T date){
this.date=date;
}
public T getdate(){
return date;
}
}

通过以上2个代码的缺点,java1.5开始引入了泛型的特性

泛型可以编译时检查类型安全,并且所有强制类型转换都是自动和隐式。

泛型的原理就是“类型的参数化”即把类型看成参数,也就是说所要操作的数据类型看成参数。

泛型可以提高代码的扩展性和重用性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: