`

java 泛型本质

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



举个简单的例子。方法max()要求返回两个参数中较大的那个,可以写成:
Integer max(Integer a, Integer b){   
  
   return a>b?a:b;   
  
}  

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与实际操作的数据类型之间进行强制转换。通过泛型,所有的强制类型转换都是自动和隐式的。因此,泛型扩展了重复使用代码的能力,而且既安全又简单。
分享到:
评论

相关推荐

    SUN公司Java泛型编程文档

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

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

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

    步步理解 JAVA 泛型编程 – 共三篇

    Java泛型编程是Java语言自1.5版本起引入的一个重要特性,它允许在编译时提供类型参数,以确保类型的安全性。泛型的基本概念与C++中的模板(template)类似,但是Java的泛型实现机制与C++模板存在本质区别。泛型可以...

    Java深度历险之Java泛型.docx

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

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

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

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

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

    Java泛型编程快速入门

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

    关于java泛型的讲解

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

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

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

    Java 泛型教程含示例代码

    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 在 Java 中,泛型方法可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个...

    JAVA-泛型基本讲解

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

    java泛型类相关介绍.doc

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

    java泛型学习

    ### Java泛型学习知识点 #### 一、泛型的基本概念及意义 - **引入背景**:JDK 5.0 引入了泛型的概念,这是为了提高 Java 的类型安全性而进行的重要改进。泛型使得程序员能够在编程时指定类型参数,从而避免运行时...

    一看就懂 详解JAVA泛型通配符T,E,K,V区别

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

    java泛型[定义].pdf

    总的来说,Java泛型提供了编译时的类型检查,降低了类型转换错误的风险,提高了代码的可读性和可维护性。理解并熟练运用泛型是Java开发者必备的技能,不仅限于集合的使用,还包括泛型接口、泛型方法、通配符等高级...

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

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

    Java泛型

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

    java泛型文档

    对Java泛型的描述,何谓泛型呢?通俗的说,就是泛泛的指定对象所操作的类型,而不像常规方式一样使用某种固定的类型去指定。泛型的本质就是将所操作的数据类型参数化,也就是说,该数据类型被指定为一个参数。这种...

    浅谈三分钟学习Java泛型中T、E、K、V、?的含义

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

    简单理解java泛型的本质(非类型擦除)

    Java泛型是Java编程语言中一个强大的特性,它允许开发者在定义类、接口或方法时使用类型参数,从而实现更灵活、安全的代码重用。泛型的主要目标是提高代码的类型安全性和效率,减少类型转换的需要,并提供了一种在...

Global site tag (gtag.js) - Google Analytics