1.泛型类与泛型方法
package Generic; import java.io.Serializable; import java.time.LocalDate; import Generic.ArrayAlg.Pair; public class ArrayDemo{ public static void main(String[] args) { LocalDate[] birthdays = { LocalDate.of(1906, 12, 9), LocalDate.of(1815, 12, 10), LocalDate.of(1903, 12, 3), LocalDate.of(1910, 6, 22) }; Pair<LocalDate> mm = ArrayAlg.minmax(birthdays); System.out.println("min = " + mm.getFirst()); System.out.println("max = " + mm.getSecond()); } } class ArrayAlg{ public class Pair<T>{ private T first; private T second; public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; } public T getFirst() { return this.first; } public T getSecond() { return this.second; } public void setFirst(T newValue){ first = newValue; } public void setSecond(T newValue) { second = newValue; } } public class Interval<T extends Comparable & Serializable> implements Serializable{ private T lower; private T upper; public Interval(T first, T second) { if(first.compareTo(second)<=0) { lower = first; upper = second; }else { lower = second; upper = first; } } } public static <T extends Comparable> Pair<T> minmax(T[] array) { if (array == null || array.length == 0) { return null; } T min = array[0]; T max = array[0]; for (int i = 1; i < array.length; i++) { if (min.compareTo(array[i]) > 0) { min = array[i]; } if (max.compareTo(array[i]) < 0) { max = array[i]; } } // ArrayAlg arrayAlg = new ArrayAlg(); // return arrayAlg.new Pair<>(min, max); return (new ArrayAlg()).new Pair<>(min, max);//这条语句等同于上面两行 } }
运行结果:
min = 1815-12-10
max = 1910-06-22