`
kidiaoer
  • 浏览: 825212 次
  • 性别: 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早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...

    Java泛型总结(2)进阶篇

    Java泛型是Java SE 5.0引入的一个重要特性,极大地提高了代码的类型安全性和重用性。在本文中,我们将深入探讨Java泛型的进阶概念,包括通配符、边界、类型擦除以及在实际开发中的应用。 1. 通配符 通配符在Java...

    java泛型总结.docx

    以下是对Java泛型的详细解释: 1. **泛型类型**:泛型类型允许我们在定义类、接口或集合时引入类型参数。比如`List&lt;String&gt;`就是一个泛型类型,其中String是类型参数,代表了列表中的元素类型。这样,当我们将字符...

    思维导图之Java泛型详解

    思维导图之Java泛型详解

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

    "Java 泛型总结(一):基本用法与类型擦除" Java 泛型是 Java 语言中的一种强大功能,它可以使代码更加简洁、安全。下面是对 Java 泛型的基本用法和类型擦除机制的介绍。 泛型的基本用法 ------------- 泛型是...

    java泛型技术之发展

    总结,Java泛型技术的发展极大地提升了Java编程的效率和安全性。它通过编译时检查和类型安全保证,帮助开发者编写出更加健壮和易于维护的代码。理解并熟练掌握Java泛型,是每一个Java开发者必备的技能。

    java 泛型方法使用示例

    下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...

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

    Java 泛型总结(二):泛型与数组 Java 中泛型数组的关系确实有些复杂,不允许直接创建泛型数组,本文将分析其中的原因,并总结一些创建泛型数组的方式。 首先,让我们看看数组和泛型的关系。数组相比于 Java ...

    Java泛型编程最全总结

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了代码的类型安全性和重用性。泛型允许我们在编写类、接口和方法时指定参数化类型,使得代码在编译时期就能捕获类型错误,...

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

    Java 泛型总结(三):通配符的使用 通配符是 Java 泛型中一个重要的概念,它允许我们在泛型中实现向上转型,解决了泛型不支持协变的问题。本文将详细介绍通配符的使用和原理。 在 Java 中,数组是协变的,这意味...

    Java泛型类型擦除后的补偿

    总结来说,Java泛型的类型擦除虽然在运行时消除了类型信息,但通过编译时的类型检查、桥接方法、通配符等补偿机制,仍然实现了强大的类型安全和便利性。开发者应理解这些补偿机制,以便更好地利用Java泛型进行类型...

    java 泛型的使用 详细讲解

    ### Java泛型的使用详细讲解 #### 一、引言 在Java开发中,泛型是一种重要的语言特性,它能够帮助开发者在不增加代码量的情况下处理多种数据类型,同时还能保持代码的清晰度和可读性。本文将详细介绍Java泛型的...

    Java 泛型总结及详解

    通过理解和掌握Java泛型,开发者可以在编写代码时得到更多编译器的帮助,增强程序的类型安全性,同时降低运行时异常的风险,提高代码质量。在实际开发中,合理使用泛型可以显著提升代码的可读性、可维护性和效率。

    全面总结Java泛型--实例

    标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...

    全面总结Java泛型

    Java 泛型是 Java 编程语言中一个强大的特性,它允许在类、接口和方法中使用类型参数,从而增加了代码的复用性和安全性。在本文中,我们将深入探讨 Java 泛型的各种方面。 首先,普通泛型允许我们在定义类时引入一...

    Java泛型与容器详细笔记.pdf (带书签)

    总结来说,Java泛型与容器详细笔记提供了关于如何使用Java中的泛型和容器类的深入理解,涵盖了Java集合框架的核心组件,泛型的类型安全机制,以及一些提高开发效率的第三方库。文档通过实例代码展示了如何在实际项目...

Global site tag (gtag.js) - Google Analytics