liuyulin
发布于 2024-02-01 / 27 阅读
0
0

泛型

泛型

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

泛型标记符

  • E - Element(在集合中使用,因为集合中存放的元素)

  • T - Type(java类)

  • K - Key(建)

  • V - Value(值)

  • N - Number(数值类型)

  • ? - 表示不确定的java类型

泛型方法

可以写一个泛型方法,该方法在调用时,可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器是当地处理每一个方法的调用。

定义方法的规则:

  • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分割),该类型参数声明部分在方法返回类型之前

  • 每一个类型参数声明部分包含一个或多个参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的表示符号

  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到实际参数类型的占位符

  • 泛型方法体的声明和其他方法一样,注意类型参数只能代表引用类型,不能是原始类型(像int、double、char等)

public class MaximumTest
{
   // 比较三个值并返回最大值
   public static <T extends Comparable<T>> T maximum(T x, T y, T z)
   {                     
      T max = x; // 假设x是初始最大值
      if ( y.compareTo( max ) > 0 ){
         max = y; //y 更大
      }
      if ( z.compareTo( max ) > 0 ){
         max = z; // 现在 z 更大           
      }
      return max; // 返回最大对象
   }
   public static void main( String args[] )
   {
      System.out.printf( "%d, %d 和 %d 中最大的数为 %d\n\n",
                   3, 4, 5, maximum( 3, 4, 5 ) );
 
      System.out.printf( "%.1f, %.1f 和 %.1f 中最大的数为 %.1f\n\n",
                   6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ) );
 
      System.out.printf( "%s, %s 和 %s 中最大的数为 %s\n","pear",
         "apple", "orange", maximum( "pear", "apple", "orange" ) );
   }
}

泛型类

泛型类的声明在类名后面添加了类型参数声明。

和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。



评论