`
cdzm5211314
  • 浏览: 8709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

泛型入门、基本应用

 
阅读更多
_入门泛型的基本应用
  JDK1.5新特性:泛型
  1、在集合中不使用泛型操作
  ArrayList collection1 = new ArrayList();
  collection1.add(1); //可以添加 int 类型,编译器有警告
  collection1.add(1L);  //可以添加 Long 类型,编译器有警告
  collection1.add("abc");  //可以添加 String类型,编译器有警告
  Object obj = (Object)collection1.get(1);  //不能确定得到的结果是什么类型,使用时需要强制类型转换。
  2、在集合中使用泛型操作:
  ArrayList<String> collection2 =new ArrayList<String>();
  //collection2.add(1);  //错误的代码,只能添加String类型数据。
  collection2.add("abc");  //正确添加
  String str = collection2.get(0);  //读取数据时不需要强制类型转换。
  3、在反射中应用泛型:
  Constructor<String> constructor = String.class.getConstructor(StringBuffer.class);
  String str = constructor.newInstance(new StringBuffer("abc"));  //不需要类型转换
  4、总结在哪里可以使用泛型:可以查JDK帮助文档
  Class Class<T>、Class Constructor<T>、Class ArrayList<E> :凡是支持泛型的类都可以使用:<T>
_泛型的内部原理及更深应用
  1、泛型对类的约束只在javac编译器进行编译时起作用,编译完成后,类字节码中不再带有泛型类型。
  ArrayList<Integer> collection = new ArrayList<Integer>();
  //collection.add("abc");  //错误的代码
  collection.getClass().getMethod("add", Object.class).invoke(collection,"abc");
  System.out.println(collection3.get(0)); //打印结果为:abc
  2、泛型类型相关术语:ArrayList<E>类定义和ArrayList<Integer>类引用:
  整个称为ArrayList<E> 泛型类型
  ArrayList<E> 中的 E 称为 类型变量或类型参数
  ArrayList<Integer> 称为 参数化的类型
  ArrayList<Integer> 中的 Integer 称为类型参数的实例 或 实际类型参数
  ArrayList<Integer> 中的 <> 可念成 type of
  ArrayList 称为 原始类型
  3、参数化类型与原始类型的兼容性:
  参数化类型可以引用一个原始类型的对象,编译报警告
  Collection<String> c=new vector();//可不可以就是编译器的问题。因为编译后两个类型是兼容的
  原始类型可以引用一个参数化类型的对象编译报告警告
  Collection c = new Vector<String>();
  4、参数化类型不考虑类型的继承关系
  Vector<String> v = new Vector<Object>();  //错误
  Vector<Object> v = new Vector<String>();  //也是错误的
  /***
  Vector v1=new Vector<String>();
  Vector<Object> v=v1;  //这两行代码在编译的时候不会报错。***\
_泛型的通配符扩展应用
  1、设计一个方法,打印任意一个泛型集合的各个元素
  public void printCollection(Collection<?> collection)
  {
    //collection.add("abc");  //错误,在使用通配符泛型时不能调用涉及参数化类型的方法
    System.out.println(collection.size());  //正确,因为size()方法不涉及参数化类型
    for(Object obj : collection)
    {
      System.out.println(obj);
    }
    collection = new HashSet<Date>();  //可以这样指定引用
  }
  总结:使用 ? 通配符可以引用其他各种参数化的类型,? 通配符定义的变量主要用做引用,可以调用与参数化无关的方法,不能调用与参数有关的方法。
  2、限定通配符的上下边界:限定通配符总是包括自己
  正确:Vectot<? extends Number> x = new Vector<Integer>();  //上边界
  错误:Vectot<? extends Number> x = new Vector<String>();
  正确:Vectot<? super Integer> x = new Vector<Number>();  //下边界
  错误:Vectot<? super Integer> x = new Vector<Byte>();
  3、
  Class<?> x;
  Class<String> y;
  x=y;  //表达式正确;y=x; 表达式错误。
_泛型集合的综合应用案例  
  HashMap<String,Integer> maps = new HashMap<String,Integer>();
  maps.put("abc",123);
  maps.put("xyz",321);
  Set<Map.Entry<String,Integer>> entrySet=maps.entrySet();
  for(Map.Entry<String,Integer> entry:entrySet)
  {
    System.out.println(entry.getKey() + ":" + entry.getValue());
  }
分享到:
评论

相关推荐

    java 泛型入门 实例

    本篇文章将带你入门Java泛型,通过实例深入理解其核心概念。 1. **泛型的基本概念** - 泛型是一种允许在定义类、接口和方法时使用类型参数的机制。这使得代码可以在编译时期检查类型,避免了不必要的类型转换,并...

    泛型入门阐述

    ### 泛型入门阐述 #### 一、泛型的基本概念 泛型是现代编程语言中一个重要的特性,它允许开发者定义类型参数化的类、接口或方法等,从而编写出更加灵活且可重用的代码。在.NET框架下,C#自2.0版本起引入了泛型支持...

    C# 2.0中泛型编程初级入门教程.doc

    在C#中,定义泛型类的基本语法如下: ```csharp public class ClassName { private T[] items; public void Add(T item) { // ... } public T Get(int index) { // ... } } ``` 这里的`T`就是一个类型...

    实例讲解Java泛型编程的快速入门

    泛型在Java中主要应用于类、接口和方法,使得程序员可以在编译时检查类型安全,并且可以消除运行时的类型检查和强制转换。 1. **泛型的基本概念** - 类型参数:在类或接口声明中,类型参数(如`K`, `V`)代表一种...

    自己编写泛型通用 Ehcache入门

    **Ehcache 入门详解** Ehcache 是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,能够显著提升数据访问速度并降低数据库负载。本文将深入讲解如何自己编写泛型通用的Ehcache配置和使用,让你更好地...

    Java泛型编程快速入门

    ### Java泛型编程快速入门详解 #### 一、引言 随着Java的发展,JDK 1.5...通过本篇文章的学习,你应该能够理解泛型的基本概念,并能够在实际开发中应用它们。掌握了Java泛型之后,你将能够编写更加灵活和健壮的代码。

    C++模板与泛型编程入门教程:代码重用与类型安全

    使用场景及目标:①理解和应用C++模板的基本概念和语法;②掌握模板在泛型编程中的重要性;③学习模板元编程和SFINAE原则;④理解模板特化与偏特化的使用场景;⑤探索模板在STL中的应用;⑥通过实际案例提升模板设计...

    C#-20中泛型编程初级入门教程.docx

    ### C# 20中泛型编程初级入门教程 #### 泛型概念及重要性 在探讨C# 20中的泛型编程之前,我们首先需要理解泛型的基本概念及其重要性。 **什么是泛型?** 泛型是一种编程技术,它允许开发人员创建类型安全的代码,...

    C++模板与泛型编程入门教程

    ### C++模板与泛型编程入门教程 #### 一、模板的概念与优势 **1.1 概念** C++模板是一种重要的语言特性,用于实现泛型编程。它允许开发者编写能够处理多种数据类型的代码,而不需要为每种类型单独编写相同的逻辑...

    LINQ入门及应用 11/13

    LINQ 入门及应用 .NET 2010 SQL LINQ入门及应用 11/13 原价:48.00元 作者:王的强,张晓娜,周静 编著 出版社:清华大学 出版日期:2009-5-1 ISBN:9787302200253 字数:661000 页码:427 ------------------------...

    Java开发实战从入门到精通视频教程下载第10章 泛型.zip

    在本《Java开发实战从入门到精通》的视频教程中,第10章重点讲解了Java泛型。泛型是Java SE 5.0引入的一个重要特性,它为集合提供了类型安全,使得代码更加健壮,同时提高了代码的可读性和可重用性。这一章的学习将...

    LINQ入门及应用 8/13

    LINQ 入门及应用 .NET 2010 SQL LINQ入门及应用 8/13 原价:48.00元 作者:王的强,张晓娜,周静 编著 出版社:清华大学 出版日期:2009-5-1 ISBN:9787302200253 字数:661000 页码:427 -------------------------...

    LINQ入门及应用 1/13

    LINQ 入门及应用 .NET 2010 SQL LINQ入门及应用 1/13 原价:48.00元 作者:王的强,张晓娜,周静 编著 出版社:清华大学 出版日期:2009-5-1 ISBN:9787302200253 字数:661000 页码:427 -------------------------...

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程涵盖了许多核心概念,其中包括Java泛型,它是从Java 1.5版本开始引入的一个重要特性。泛型允许我们在编写代码时指定类型参数,从而在编译时提供类型安全性和代码复用性。 Java中的泛型定义: ...

    Java基础入门自学课件 第11章 泛型(共4页).ppt

    - 泛型与集合框架的结合是其应用最广泛的场景,可以确保集合中只存储指定类型的数据,避免了类型转换的麻烦和潜在的ClassCastException。 - 如`List&lt;String&gt; stringList = new ArrayList();`,这里声明的`string...

    Java基础入门自学课件 第11章 泛型(共4页).rar

    1. **泛型的基本概念**:泛型允许我们在定义类、接口和方法时指定一种或多种类型参数,这样在实际使用时可以传入具体的类型,增强了代码的复用性。 2. **类型参数化**:在类、接口和方法声明前使用尖括号`&lt;T&gt;`来...

    java入门资料(String,接口和抽象类,泛型,io流,反射,多线程)

    Java 入门资料综述 Java 是一种广泛应用于移动设备、Web 应用程序和企业软件开发的编程语言。本资源概括了 Java 的基础知识,涵盖 String、接口和抽象类、泛型、IO 流、反射和多线程等方面。 String String 是 ...

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 第08章_泛型(共22页).rar

    Java SE是Java Standard Edition的缩写,它是Java平台的核心...以上内容涵盖了Java SE中泛型的基本概念、优势、使用方法以及相关注意事项,通过学习这一章节,你将能够更好地理解和应用泛型,提高编程效率和代码质量。

Global site tag (gtag.js) - Google Analytics