今天看了《Thinking in java》中讲解的泛型,在这里记一下笔记,理一下学到的东西。
为什么使用泛型?
使用泛型是为了让我们设计的类和方法更通用。泛型即类型参数化,在调用方法或new一个对象时将变量的类型作为参数传递给方法或类。回想一下我们平常写的类或方法,参数的类型都是写死的,只支持特定的类型。这里举一个简单的例子。一个求整型数组最大值的方法,我们可能这样写:
public static int maxValue(int[] arr) {
int max = Integer.MIN_VALUE;
for (int i : arr) {
if(i > max)
max = i;
}
return max;
}
但是这样写的坏处是这个方法只支持int型的数组求最大值,如果我想求一个double型数组的最大值呢?一种方法是使用重载的技术再写一个public static double maxValue(double[] arr)方法。如下:
public static double maxValue(double[] arr) {
double max = arr[0];
for (double d : arr) {
if(d > max) max = d;
}
return max;
}
这种方法可以暂时解决我们的问题。但问题是我们每增加一种需要求数组中最大值的类型就要新写一个方法,这显然是不太好的。
使用泛型我们可以定义一个支持不同类型的求最大值方法。当然,泛型针对的是引用类型。
网友评论