java 泛型

本文介绍了Java泛型的基本概念及其在编程中的应用。通过实例对比了泛型前后代码的区别,展示了如何利用泛型减少类型转换错误并提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

泛型是为了限定类型设置的。例如,原先在ArrayList的对象里面存取的Object对象,每一次迭代取出数据的时候,都要进行强制的类型转换,如果是知道类型还好些,如果不知道的话就有可能产生问题。

ArrayList list=new ArrayList();
ArrayList<String> list1=new ArrayList<String>();
这里面list保存的Object类型的对象,下面list1保存的是String类型的对象。当为list1添加非字符串元素的时候会出现编译错误。当迭代取出list1中的元素时,类型为字符串类型。

当我们设定了一个继承关系,父类为Bean,子类为ABean,BBean,等等。又设置了一个ArrayList的list对象来保存这个继承关系相关的对象,有要求取出的时候不需要进行强制类型转换,这个时候可以这样使用泛型来操作:
ArrayList<? extends Bean> list=new ArrayList<? extends Bean>();
这样的话就可以限定保存的类型为Bean的子类型。这样的设置在抽象父类的抽象方法的返回值类型设定上会有很大的便利性。

上面的这些对于不需要特别正对泛型类型编程的来说足够用了。

在往下面说,针对泛型的编程其实就有把泛型控制的类型作为一个通用的标示,当把这个标示替换为实际的类型的时候,程序会像普通的有确定参数的一段程序是一模一样的。看下面:
  • class Point<T>{       // 此处可以随便写标识符号,T是type的简称  
  •     private T var ; // var的类型由T指定,即:由外部指定  
  •     public T getVar(){  // 返回值的类型由外部决定  
  •         return var ;  
  •     }  
  •     public void setVar(T var){  // 设置的类型也由外部决定  
  •         this.var = var ;  
  •     }  
  • };  
  • public class GenericsDemo06{  
  •     public static void main(String args[]){  
  •         Point<String> p = new Point<String>() ; // 里面的var类型为String类型  
  •         p.setVar("it") ;        // 设置字符串  
  •         System.out.println(p.getVar().length()) ;   // 取得字符串的长度  
  •     }  
  • }; 

这个其实就像是对不同类型写相同的类,由于类型不同,导致类中只有有限的部分不同。抽取不同的部分,进行封装,就是泛型编程的关键了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值