Java泛型与算法分析知识详解
1. Java泛型基础
在Java编程中,泛型是一项强大的特性。比如下面这个用于寻找数组中最大元素的泛型静态方法:
public static <AnyType extends Comparable<? super AnyType>>
AnyType findMax( AnyType [ ] arr )
{
int maxIndex = 0;
for( int i = 1; i < arr.length; i++ )
if( arr[ i ].compareTo( arr[ maxIndex ] ) > 0 )
maxIndex = i;
return arr[ maxIndex ];
}
这个方法利用了类型边界来确保传入的类型具有可比性。类型边界指定在尖括号 <>
内,规定了参数类型必须具备的属性。
在尝试定义泛型方法签名时,有几种不同的写法。一种简单的尝试是 public static <AnyType extends Comparable> ...
,但 Comparable
接口现在是泛型的,这种写法并不合适。更好的写法是 public static <AnyType extends Comparable<AnyType>> ...
,然而这仍然存在问题。例如,假设 S