概述
java 泛型是JDK 5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质时参数化类型,也就是说所操作的数据类型被指定为一个参数。
假定我们有这样一个需求:写一个排序算法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,我们就可以使用Java泛型。
使用Java泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。
我们可以写一个泛型方法,该方法在调用时可以接受不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。
定义泛型方法的规则:
1:所有泛型方法声明都有一个类型参数声明部分(有尖括号分隔),该类型参数声明部分在方法返回类型之前。
2:每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
3:类型参数能被用来声明返回值类型,并且能作为泛型方法得到实际参数类型的占位符。
4:泛型方法体的声明和其他方法一样。注意类型参数只能代表引用类型,不能是原始类型。
使用泛型方法打印不同字符串的元素:
public class Test{
//泛型方法printArray
public static <E> void printArray(E[] inputArray){
//输出数组元素
for(E element : inputArray){
System.out.printf("%s",element);
}
System.out.println();
}
public static void main(String[] args){
//创建不同类型数组
Integer[] intArray = {1,2,3,4,5};
Double[] doubleArray = {1.1,2.2,3.3,4.4,5.5};
Character[] charArray = {'h','e','l','l','o'};
System.out.println("整型数组元素为:");
printArray(intArray);//传递一个整型数组
System.out.println("n双精度型数组元素为:");
printArray(doubleArray);//传递一个双精度型数组
System.out.println("n字符型数组元素为:");
printArray(charArray);//传递一个字符型数组
}
}
有界的类型参数:
有些时候,我们需要限制那些被允许传递到一个类型参数的类型种类范围。例如,一个曹祖数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。
要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。
例如,利用泛型方法返回三个课比较对象的最大值:
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;
}
return max;
}
public static void main(String[] args){
System.out.printf("%d, %d 和 %d中最大的数为 %d nn",3,4,5,maximum(3,4,5));
System.out.printf("%f, %f 和 %f中最大的数为 %f nn",3.2,4.6,5.1,maximum(3.2,4.6,5.1));
System.out.printf("%s, %s 和 %s中最大的数为 %s nn","pear","apple","orange",maximum("apple","pear","orange"));
}
}
最后
以上就是鳗鱼哈密瓜为你收集整理的Java 泛型用法详解的全部内容,希望文章能够帮你解决Java 泛型用法详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复