//定义一个泛型类,找到数组中最大值
class Alg<T extends Comparable<T>>{//表示传的泛型都是要实现Comparable接口的
public T findMax(T[]array){
T max=array[0];
for (int i = 0; i < array.length; i++) {
// if(array[i]>max){//引用类型不能直接比较,会报错,要实现comparable接口比较
if(array[i].compareTo(max)>0){
max=array[i];
}
}
return max;
}
}
public class Test {
public static void main(String[] args) {
Alg<Integer> alg=new Alg<>();
Integer [] array={1,2,3,4,5,6,7};
Integer x =alg.findMax(array);
System.out.println(x);
}
结果:7
泛型方法
泛型方法举例
复制代码
class Alg2{
//泛型方法
public<T extends Comparable <T>> T findMax(T[]array){
T max=array[0];
for (int i = 0; i < array.length; i++) {
if(array[i].compareTo(max)>0){
max=array[i];
}
}
return max;
}
}
public class Test {
public static void main(String[] args) {
Alg2 alg2 =new Alg2();
Integer[] array={1,2,3,4,5,6,7};
// Integer x =alg2.<Integer>findMax(array);
Integer x =alg2.findMax(array);//不写<Integer>也行,编译器会通过前面来推导
System.out.println(x);
}
泛型方法静态化
复制代码
class Alg3{
//泛型方法静态化 相较于泛型方法,只是加了static而已
public static <T extends Comparable <T>> T findMax(T[]array){
T max=array[0];
for (int i = 0; i < array.length; i++) {
if(array[i].compareTo(max)>0){
max=array[i];
}
}
return max;
}
}
public class Test {
public static void main(String[] args) {
Integer[] array={1,2,3,4,5,6,7};
Integer x =Alg3.findMax(array);//静态方法直接通过类名调用
System.out.println(x);
}