`
kidiaoer
  • 浏览: 805563 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java泛型总结

阅读更多
泛型总结篇:
1)泛型参数只能是类类型
例如:List<int>      //   报错
      List<Integer> // 正确

2)泛型的类型参数可以有多个!
例如:List<Integer,String,Boolean> list = new

ArrayList<Integer,String,Boolean>();
  
3)泛型的参数类型可以使用extends,习惯称“有界类型”,
例如:List<student extends person>,person为list的上界

4)泛型可以使用通配符类型!“?” 相当于“Object”类型,(注意不可逆)
例如:List<?>       //定义成这样可以添加Object类型到List里面去
      List<Object>; //定义成这样不可以添加String类型到List里面去
      List<? extends Object>; // 这样就可以互等了!这样还可以设定泛型的上限

5)带泛型的类,构造方法写法不变,其后不可以加泛型!
例如:class Student<T>{
    public Student<T>(){} // 构造方法这样写就错了
      }

6)List<String> 不是 List<Object> 的子类!,不可以把前者看成后者的子类,所以不

可以把前者的实例赋给后者
例如: List<String> Slist = new ArrayList<String>();
Slist.add(new String("abc"));
List<Object> Olist = new ArrayList<Object>();
        Olist.add("abc");
Olist = Slist;   // 报错!


7)带不同泛型参数的实例可以共享类的静态方法和静态变量,所以静态方法和静态变量

申明的时候不可以使用类型行参
例如:class Cup<T>{
        static T info; // 报错!
public static setInfo(T info){}; // 报错!
      }

8)带不同泛型参数的类是共享一个字节码文件的!反编译过后泛型参数就被擦除了
例如:List<String> Slist = new ArrayList();
      Slist.add(new String("aaa"));
      List<Integer> Ilist = new ArrayList();
      Ilist.add(new Integer(100));
      System.out.println(Slist.getClass()==Ilist.getClass());
结果为true;

9)当使用定义了泛型参数的接口 和 父类的时候!就不能在带参数了
例如:class Sub extends Father<String> {} // 错误

10)
class T<E>{}
public class typeTest extends T<E>{}//报错

class T<E>{}
public class typeTest extends T<Integer>{} // 正确 可使用String等基本封装类型

class T<E>{}
class Student{}
public class typeTest extends T<Student>{} // 这样也正确

11) 泛型方法 ,泛型方法的参数的作用域仅在本方法,要和方法带泛型区分开!
Static <T> void test(List<String> S_list){} // 泛型参数要放在返回类型前

12)带有泛型的代码转换成没有泛型的代码由javac完成,虚拟机不处理这些事情!
这种技术叫做 “擦除”;
例如:class Food<T extends Number>{
          T size;
   public Food(T size){}   //注意构造方法不可以带泛型参数!
   public void setSize(){ this.size = size; }
   public T getSize(){ return this.size;}
      }
      public class test{
          public static void main(String arg[]){
       Food<Integer> a = new Food<Integer>(6);
              Ingeger as = a.getSize(); // 返回的是Integer的类型
              Food b = a;   //把a对象赋给Food变量;泛型参数类型会丢失 即擦除;
              Number size1 = b.getSize(); // b只知道size的类型是Number
                     // Integer in = b.getSize(); 这样是编译错误的!
          }
      }

分享到:
评论
1 楼 drew926 2016-07-20  
泛型的类型参数可以有多个?这是java哪个版本支持的?

相关推荐

    很好的Java泛型的总结

    很好的Java泛型的总结,看完之后你一定会知道java泛型的底层机制,你一定会学会Java泛型!

    JAVA泛型总结

    java 泛型详解 实例 class Point class Notepad,V&gt;{ // 此处指定了两个泛型类型 } 通配符、受限泛型、泛型无法向上转型、泛型接口、泛型方法、通过泛型方法返回泛型类型实例、使用泛型统一传入的参数类型、泛型数组...

    思维导图之Java泛型详解

    思维导图之Java泛型详解

    Java泛型总结(2)进阶篇

    NULL 博文链接:https://fantaxy025025.iteye.com/blog/2213815

    全面总结Java泛型

    • 全面总结Ja• 全面总结Java泛型v• 全面总结Ja• 全面总结Java泛型va泛型a泛型• 全面• 全面总结Java泛型• 全面总结Java泛型总结Java泛• • 全面总结Java泛型全面总结Java泛型型• • 全面总结Java泛型全面...

    java泛型总结.docx

    类型推断:在Java 7及以上版本中,可以使用varargs和钻石操作符来推断类型参数。例如,List[] lists = Arrays.asList(new List() {{ add("hello"); add("world"); }}); 泛型边界:可以使用泛型边界来限制类型参数的...

    Java 泛型总结(一):基本用法与类型擦除

    本文主要介绍了Java泛型的使用以及类型擦除相关的问题。具有很好的参考价值。下面跟着小编一起来看下吧

    Java 泛型总结及详解

    主要介绍了Java 泛型的相关资料,并附简单实例代码,需要的朋友可以参考下

    Java 泛型总结(二):泛型与数组

    数组与泛型的关系还是有点复杂的,Java 中不允许直接创建泛型数组。本文分析了其中原因并且总结了一些创建泛型数组的方式。具有很好的参考价值。下面跟着小编一起来看下吧

    全面总结Java泛型--实例

    全面总结Java泛型--实例

    Java泛型编程最全总结

    NULL 博文链接:https://qiemengdao.iteye.com/blog/1525624

    java-泛型总结【从入门到项目总结】

    关于java泛型的总结: 从入门介绍到项目使用的实际经验归纳总结得出! 从jdk5到jdk8!

    java泛型.xmind

    自己总结的java泛型的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    Java 泛型总结(三):通配符的使用

    在泛型的使用中,还有个重要的东西叫通配符,本文介绍通配符的使用。具有很好的参考价值。下面跟着小编一起来看下吧

    Java中泛型总结(推荐)

    主要介绍了Java中泛型总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java深度历险

    JAVA泛型 28 类型擦除 28 实例分析 29 通配符与上下界 30 类型系统 31 开发自己的泛型类 32 最佳实践 32 参考资料 33 目录 3 JAVA注解 34 使用注解 34 开发注解 35 处理注解 35 实例分析 38 参考资料 39 JAVA反射与...

    泛型技术归纳

    Java泛型简明教程 泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员...这就是为什么我想使用一种最简单的形式来总结一下程序员需要知道的关于Java泛型的最基本的知识。

    基于java中泛型的总结分析

    本篇文章介绍了,在java中泛型的总结分析。需要的朋友参考下

    Java总结篇系列:Java泛型详解

    下面小编就为大家带来一篇Java总结篇系列:Java泛型详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics