心法领悟187:泛型类型参数的限定。
限定有两种情况:
- 小于某个范围
- 大于某个范围
本实例使用的是第一种。“范围”既可以是一个类,也可以是一个接口,还可以是类和接口的组合。对于组合的情况,需要将类放在第一位,并使用&进行分隔。
注意:当泛型参数类型被限制为接口的子类型时,也使用extends关键字。
使用下面的语法将T限制为Comparable接口的实现类。
<T extends Comparable<T>> T
package com.mingrisoft.generic;
public class GenericComparison {
public static <T extends Comparable<T>> T getMin(T[] array) {
if (array == null || array.length == 0) {
return null;
}
T min = array[0];
for (int i = 1; i < array.length; i++) {
if (min.compareTo(array[i]) > 0) {
min = array[i];
}
}
return min;
}
}
package com.mingrisoft.generic;
public class GenericComparisonTest {
public static void main(String[] args) {
String[] books = { "Java从入门到精通(第2版)", "C#编程宝典", "细说Java", "视频学Java" };
System.out.println("明日科技新书列表:");
for (String book : books) {
System.out.println(book);
}
String min = GenericComparison.getMin(books);
System.out.println("按名称排序最小的第一本书:");
System.out.println(min);
}
}
运行结果:
明日科技新书列表:
Java从入门到精通(第2版)
C#编程宝典
细说Java
视频学Java
按名称排序最小的第一本书:
C#编程宝典