`

java 泛型入门 实例

    博客分类:
  • java
阅读更多
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

  Java语言引入泛型的好处是安全简单。

  在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

  泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

  泛型在使用中还有一些规则和限制:

  1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

  2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。

  3、泛型的类型参数可以有多个。

  4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。

  5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(java.lang.String);

  泛型还有接口、方法等等,内容很多,需要花费一番功夫才能理解掌握并熟练应用。在此给出我曾经了解泛型时候写出的两个例子(根据看的印象写的),实现同样的功能,一个使用了泛型,一个没有使用,通过对比,可以很快学会泛型的应用,学会这个基本上学会了泛型70%的内容。

  例子一:使用了泛型

public class Gen<T> {
   private T ob;
   public Gen(T ob){
    this.ob=ob;
   }
   public T getOb(){
    return ob;
   }
   public void setOb(T ob){
    this.ob=ob;
   }
   public void showType() {
  System.out.println("T的实际类型是:"+ob.getClass().getName());
   }
}
public class GenDemo {
 public static void main(String[] args){
 //定义泛型类Gen的一个Integer版本
 Gen<Integer> intOb=new Gen<Integer>(88);
 intOb.showTyep();
 int i= intOb.getOb();
 System.out.println("value= " + i);

 System.out.println("----------------------------------");

 //定义泛型类Gen的一个String版本
 Gen<String> strOb=new Gen<String>("Hello Gen!");
 strOb.showTyep();
 String s=strOb.getOb();
 System.out.println("value= " + s);
}
}

  例子二:没有使用泛型

public class Gen2 {
 private Object ob; //定义一个通用类型成员

 public Gen2(Object ob) {
  this.ob = ob;
 }

 public Object getOb() {
  return ob;
 }

 public void setOb(Object ob) {
  this.ob = ob;
 }

 public void showTyep() {
  System.out.println("T的实际类型是: " + ob.getClass().getName());
 }
}

public class GenDemo2 {
 public static void main(String[] args) {
  //定义类Gen2的一个Integer版本
  Gen2 intOb = new Gen2(new Integer(88));
  intOb.showTyep();
  int i = (Integer) intOb.getOb();
  System.out.println("value= " + i);

  System.out.println("----------------------------------");

  //定义类Gen2的一个String版本
  Gen2 strOb = new Gen2("Hello Gen!");
  strOb.showTyep();
  String s = (String) strOb.getOb();
  System.out.println("value= " + s);
 }
}

  运行结果:

  两个例子运行Demo结果是相同的,控制台输出结果如下:

  T的实际类型是:

java.lang.Integer
value= 88
----------------------------------
T的实际类型是: java.lang.String
value= Hello Gen!

Process finished with exit code 0

  看明白这个,以后基本的泛型应用和代码阅读就不成问题了。
分享到:
评论

相关推荐

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

    - Java泛型在编译后会进行类型擦除,这意味着在运行时,所有的泛型类型信息都会被替换为它们的边界类型或`Object`。因此,泛型并不改变对象的实际类型,仅在编译时提供类型检查。 6. **泛型与集合** - Java集合...

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

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

    220个JAVA初学者实例

    以上只是Java初学者实例中可能涉及的部分关键知识点,通过220个实例的实践,你可以逐步建立起扎实的Java基础,为后续深入学习和项目开发打下坚实的基础。不断地练习和巩固这些知识,将有助于你成长为一名合格的Java...

    Java泛型的继承和实现操作示例

    Java泛型的继承和实现操作示例主要介绍了Java泛型的继承和实现操作,结合实例形式分析了Java泛型类的继承以及泛型接口的实现相关操作技巧。 一、泛型类的继承 在Java中,泛型类可以被继承,子类可以继承父类的泛型...

    Java泛型定义与用法入门示例

    Java泛型定义与用法入门示例 Java泛型定义与用法是Java编程语言中非常重要的概念,它可以帮助开发者编写更加安全、灵活和可重用的代码。在本文中,我们将详细介绍Java泛型定义与用法,并通过实例形式分析了Java泛型...

    java入门实例代码

    "Java入门实例代码"是针对初学者设计的一系列教程,旨在帮助新手快速掌握Java SE(Java Standard Edition)的基础知识。Java SE是Java的核心部分,包含了开发桌面应用、网络应用和移动应用所需的所有工具和API。 在...

    《Java从入门到精通:实例版》源程序

    《Java从入门到精通:实例版》是一本旨在帮助初学者快速掌握Java编程语言的教程。这本书通过实例化的教学方式,让学习者能够在实践中理解并掌握Java的核心概念和技术。源程序包含了书中各个章节的实例代码,是加深...

    Java入门(实例学习)

    "Java入门(实例学习)"的资源集旨在帮助初学者通过实际操作深入理解Java编程的基本概念和语法。在这个压缩包中,包含了一系列精心设计的Java实例,每一个都经过了编译验证,确保可以运行并展示特定的编程概念。 1....

    优质课件 java基础入门必学 Java SE编程入门教程 全套PPT课件 共30个文件 含辅助资料.rar

    Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门...

    Java入门与实例教程

    根据给定的标题“Java入门与实例教程”及其描述:“java学习的入门级教程,概念讲得清晰,而且附带实例讲解。很多代码开发中可以重用。”我们可以推断出这本书主要面向Java初学者,旨在通过简洁明了的概念介绍及实际...

    java从入门到精通(第三版)光盘实例

    《Java从入门到精通》(第三版)是一本旨在帮助初学者和有一定基础的程序员深入...总之,《Java从入门到精通》(第三版)的光盘实例为学习者提供了一个良好的实践平台,有助于他们从理论走向实践,真正精通Java编程。

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

    Java泛型是Java编程语言中的一个重要特性,它在2004年随着Java SE 5.0的发布而引入。泛型的主要目的是提高代码的类型安全性和效率,同时减少在运行时进行类型检查和类型转换的需要。在这个“Java基础入门自学课件 第...

    Java SE编程入门教程 java instanceof(共3页).pptx

    Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门...

    Java入门与实例

    本教程“Java入门与实例”旨在帮助初学者理解Java语言的基础概念并掌握实际编程技能。通过学习,你将能够从零开始编写Java程序,并解决实际问题。 1. **Java语言基础** - **变量与数据类型**:Java有基本数据类型...

    《Java 基础入门(传智播客)》_高清中文版pdf 网盘链接

    根据提供的文件信息,我们可以推断出这是一本关于Java编程语言的基础入门教程,由传智播客出版。虽然具体的PDF内容未给出,但从标题、描述和部分可见内容来看,本书主要面向初学者,旨在帮助他们掌握Java编程的基本...

Global site tag (gtag.js) - Google Analytics