泛型

简介: 泛型需求:定义一个集合存储一批字符串,然后把字符串的元素转换成大写好处:可以把运行时出现的问题,提前至编译时。避免了无畏的强制类型转换注意事项泛型中没有多态的概念左右两边的数据类型必须要一致或者只写一边的泛型推荐使...

泛型

需求:
定义一个集合存储一批字符串,然后把字符串的元素转换成大写

  • 好处:
    1. 可以把运行时出现的问题,提前至编译时。
    2. 避免了无畏的强制类型转换
  • 注意事项
    1. 泛型中没有多态的概念
    2. 左右两边的数据类型必须要一致
    3. 或者只写一边的泛型
  • 推荐使用

两边都写上同样数据类型的泛型

自定义的泛型:

可以理解为是一个数据类型的变量,或者是一个数据类型的占位符

  • 格式:
    修饰符 <声明自定义泛型> 返回值类型 函数名(形参列表)
  • 注意细节:
    1. 函数上自定义泛型的具体数据类型是在调用该函数的时候,传递实参数据的时候确定具体的数据类型的
    2. 泛型中是不能使用基本数据类型数据的,如果需要使用基本数据类型数据,那么就要使用基本数据类型对应的包装类型
      float-----> Float
      double----> Double
      char------> Character
      boolean---> Boolean
      byte------> Byte
      short-----> Short
      long------> Long```
      
    3. 自定义泛型使用的标识符可以自定义的,只要符合标识符的命名规则即可。但是一般自定义泛型使用的标识符都是单个大写字母(T E)

自定义泛型类:

  • 格式:
class 类名<T>{}
  • 泛型类要注意的事项:
    1. 类上声明的自定义泛型的具体数据类型是在使用该类创建对象的时候确定下来的
    2. 如果一个类已经声明了自定义泛型,该类在创建对象的时候没有指定自定义泛型的具体数据类型,那么则默认为Object数据类型
    3. 静态大方法不能使用类上声明的自定义泛型,如果需要使用自定义泛型就必须在自己的方法 上声明

泛型接口:

  • 定义格式:
interface 接口名 <声明自定义的泛型>{}
  • 注意的细节:
    1. 接口上自定义泛型的具体数据类型是实现该接口的时候确定的
    2. 如果一个接口已经自定义了泛型,那么在实现类的时候,没有指定自定义泛型的具体数据类型,那么默认为Object数据类型

泛型的上下限:

  • 需求1:

定义一个方法,可以接受任意类型的集合对象,接受的集合对象只能存储Integer以及Integer父类类型的数据

  • 需求2:

定义一个方法,可以接受任意类型的集合对象,接受的集合对象只能存储Number以及Number子类类型的数据

  • 泛型的通配符:?
需求1:
? super Integer (泛型的下限) 只能用于Integer或者是Integer的父类
需求2:
? extends Number (泛型的上限) 只能用于Number或者是Number的子类
相关文章
|
6月前
|
Java
|
存储 安全 Java
泛型的使用
泛型的使用
70 0
|
6月前
|
安全 编译器 Scala
何时需要指定泛型:Scala编程指南
本文是Scala编程指南,介绍了何时需要指定泛型类型参数。泛型提供代码重用和类型安全性,但在编译器无法推断类型、需要提高代码清晰度、调用泛型方法或创建泛型集合时,应明确指定类型参数。通过示例展示了泛型在避免类型错误和增强编译时检查方面的作用,强调了理解泛型使用时机对编写高效Scala代码的重要性。
45 1
何时需要指定泛型:Scala编程指南
|
6月前
|
存储 算法 容器
什么是泛型?
什么是泛型?
25 0
|
6月前
什么是泛型,泛型的具体使用?
什么是泛型,泛型的具体使用?
35 0
|
6月前
|
Java
什么是泛型, 泛型的具体使用
什么是泛型, 泛型的具体使用
34 0
|
存储 安全 Java
泛型的相关知识
泛型的相关知识
|
存储 C#
【C#】什么是泛型?
泛型是C#编程中一个非常重要的概念,它能够编写更加通用、灵活和可重用的代码,能够编写可以在不同类型之间工作的代码,同时还可以提高代码的效率和可维护性。在本文中,我们将探讨泛型及其在C#编程中的应用。
|
存储 Java 编译器
对泛型的认识
对泛型的认识
|
算法 安全 Java