`
pengcqu
  • 浏览: 774547 次
  • 性别: Icon_minigender_1
  • 来自: 未来
社区版块
存档分类
最新评论

Java中泛型的本质

阅读更多

泛型在Java中经常用到。泛型在本质上是指类型参数化。所谓类型参数化,是指用来声明数据的类型本身,也是可以改变的,它由实际参数来决定。在一般情况下,实际参数决定了形式参数的值。而类型参数化,则是实际参数的类型决定了形式参数的类型。

 

举个简单的例子。方法max()要求返回两个参数中较大的那个,可以写成:

Integer max(Integer a, Integer b){

   return a>b?a:b;

}

 

这样编写代码当然没有问题。不过,如果需要比较的不是Integer类型,而是Double或是Float类型,那么就需要另外再写max()方法。参数有多少种类型,就要写多少个max()方法。但是无论怎么改变参数的类型,实际上max()方法体内部的代码并不需要改变。如果有一种机制,能够在编写max()方法时,不必确定参数a和b的数据类型,而等到调用的时候再来确定这两个参数的数据类型,那么只需要编写一个max()就可以了,这将大大降低程序员编程的工作量。

 

在C++中,提供了函数模板和类模板来实现这一功能。而从JDK1.5开始,也提供了类似的机制:泛型。从形式上看,泛型和C++的模板很相似,但它们是采用完全不同的技术来实现的。

 

在泛型出现之前,Java的程序员可以采用一种变通的办法:将参数的类型均声明为Object类型。由于Object类是所有类的父类,所以它可以指向任何类对象,但这样做不能保证类型安全。

 

泛型则弥补了上述做法所缺乏的类型安全,也简化了过程,不必显示地在Object与实际操作的数据类型之间进行强制转换。通过泛型,所有的强制类型转换都是自动和隐式的。因此,泛型扩展了重复使用代码的能力,而且既安全又简单。

 

 

相关链接:

★  Java知识点汇总 

全球软件项目外包平台 兼职做外包 挣Money!

分享到:
评论

相关推荐

    泛型java的泛型知识,非常有用

    - 泛型的本质是在类、接口或方法中使用类型参数,让它们能够处理多种数据类型。在Java中,泛型通常以尖括号 `<T>` 表示,其中 `T` 是类型参数,可以代表任何引用类型。 - 类如 `class Java_Generics,V>`,`K` 和 `...

    JAVA-泛型基本讲解

    1、Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。...

    SUN公司Java泛型编程文档

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。这个特性极大地提高了代码的类型安全性和可读性,减少了在运行时出现ClassCastException的可能性。SUN公司的Java泛型编程文档,包括...

    java中泛型技术介绍及应用

    泛型是在Java SE 1.5版本中引入的,其本质是参数化类型,这意味着在类、接口或方法中,数据类型可以作为一个参数来指定。 泛型的主要好处在于编译时的安全性和效率。在泛型引入之前,Java开发者通常使用Object类型...

    Java中泛型总结(推荐)

    Java 中泛型总结 Java 中泛型总结是指在 Java 语言中使用泛型(generics)来实现编译时类型安全检测机制,避免向下转型的隐患。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。在 Java 中,...

    解析Java泛型的类型擦除.pdf

    解析Java泛型的类型擦除 Java 泛型是 Java SE 1.5 的新特性,它们在语法和应用环境上与 C++ 中的模板相似,但是本质上它们之间有着区别,这种区别就在于 Java 泛型的类型擦除。 Java 泛型的类型擦除是 Java 语言...

    Java泛型的深度解析:原理、应用与最佳实践

    Java泛型是Java 5中引入的一项强大特性,它允许在编译时提供类型安全,同时提高代码的重用性和可读性。泛型的本质是参数化类型,即在类、接口和方法中使用类型作为参数。本文将深入探讨Java泛型的工作原理、应用场景...

    Java深度历险之Java泛型.docx

    1. **类型擦除**:Java泛型的本质是在编译器层面实现的,这意味着编译后的字节码并不包含泛型中的类型信息。这一过程称为“类型擦除”。类型擦除导致了一些副作用,比如泛型类无法拥有独特的`Class`对象,所有泛型...

    java泛型、原始类型、桥接方法

    Java 泛型的本质是编译器“耍了个花招”,使得似乎存在对泛型类型的支持,但实际上虚拟机并不支持泛型类型。编译器在编译时检查所有的代码,然后“擦除”所有的泛型类型,生成只包含普通类型的类文件。 泛型类在 ...

    java中的泛型-详细

    总的来说,Java泛型提供了一种强大的工具,让开发者能够编写更加安全、灵活且可复用的代码。它简化了类型转换,增强了类型检查,并通过类型擦除保持了与现有Java代码的兼容性。理解和熟练运用泛型是每个Java开发者的...

    Java泛型编程快速入门

    Java泛型的本质是为了实现参数化类型。也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别被称为泛型类、泛型接口、泛型方法。通过泛型,可以在不同的上下文中使用同一段...

    Java 泛型教程含示例代码

    Java 泛型是 JDK 5 中引入的一个新特性,提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 在 Java 中,泛型方法...

    关于java泛型的讲解

    通过理解和熟练运用这些规则和特性,你可以更有效地利用Java泛型来编写安全、高效和可维护的代码。在实际开发中,泛型能够帮助你构建更加灵活的容器类,比如集合框架中的 `ArrayList<T>`、`HashMap, V>` 等,它们都...

    java--泛型编程

    泛型本质上是参数化类型,允许我们在编写代码时,将数据类型作为参数,这使得类、接口和方法能够处理多种不同的数据类型。 在泛型方法中,我们可以定义一个通用的方法,它能够在编译时根据传入的参数类型自动进行...

    详谈Java泛型中T和问号(通配符)的区别

    Java泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处...

    java泛型类相关介绍.doc

    Java 泛型是一种强大的编程工具,它在Java SE 1.5版本中引入,目的是为了增强类型安全性并提高代码的重用性。...此外,深入理解类型擦除、类型推断和边界通配符等高级概念也是精通Java泛型的关键。

    泛型JAVA指南.pdf

    通过对比Java泛型和C++模板(Templates),我们可以看到两者在设计上有相似之处,但也有本质的区别。Java的泛型提供了比C++模板更严格的类型检查,但以类型擦除作为实现的代价。这意味着Java泛型在类型安全的同时...

    java接口泛型

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

    Java泛型

    总之,Java泛型通过引入类型参数,增强了代码的类型安全,简化了类型转换,并提高了代码的重用性。理解和熟练运用泛型是成为专业Java开发者的必备技能。在实际编程中,应充分利用泛型来编写更加健壮和可维护的代码。

Global site tag (gtag.js) - Google Analytics