关闭

java5 学习笔记2

573人阅读 评论(0) 收藏 举报


 今天粗略的看了generic,泛型的基本功能,在C++中早就有了,不过Java中的generic的确多了很多东西,但是也正如许多人批判的,一大堆尖括号让代码变丑了,呵呵,不过我才刚开始学,没有体会


 基本功能不废话了,今天觉得比较印象深刻的是generic的类型转换,也就是说:
 LinkedList<Float> ff = new LinkedList<Float>();
 LinkedList<Number> nn ;
 nn = ff;
 这样是错误的,虽然Number是Float的父类,generic的类型转换只限于

基础类型,也就是说
 List<Float> kk = ff;
 是正确的。同样,如果
 Number n = new Float(3.2);
 ff.add(n);
 这样同样不能通过编译。


 之所以generic本身不能有类型转换(也就是使用参数的父类),我个人觉得主要是因为generic这个功能本身是一种编译期间的检查,而不是JVM的一种

改进,所有的generic类型,都会在编译期间被erasure(擦除)掉,实际上,上

面的代码经过编译后,JVM实际看到的代码应该是
 LinkedList ff = new LinkedList();
 具体的generic是不存在的,被擦除了。还有没有其他原因,还要继续深入学习才行~


 generic也可以进行类型限制,即类似下面
 class gTest<TT extends Runnable>{
  public void get(TT tt){
   tt.run();
  }
 }
 这里有点奇怪的是,Runnable明明是接口,但是这里却不用implements,而是统一用extends。我手头这本书没有讲,下次要借本专门的书来看看
 最后,关注《Java in a Nutshell 第五版》

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:483723次
    • 积分:5584
    • 等级:
    • 排名:第4660名
    • 原创:89篇
    • 转载:6篇
    • 译文:11篇
    • 评论:251条
    最新评论
    CSDN好友