对T extends Number的理解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/sinat_32336967/article/details/100662115

对类型参数T的修饰可以分为两部分:T exends Number 以及 T extends Comparable<? super T>。前面一部分表示类型参数T必须是Number的子类,后面一部分表示T或者T的父类实现了Comparable接口。

//注意:Number并没有实现Comparable
private static <T extends Number & Comparable<? super T>> T min(T[] values) {
    if (values == null || values.length == 0) return null;
    T min = values[0];
    for (int i = 1; i < values.length; i++) {
        if (min.compareTo(values[i]) > 0) min = values[i];
    }
    return min;
}

测试:

int minInteger = min(new Integer[]{1, 2, 3});//result:1
double minDouble = min(new Double[]{1.2, 2.2, -1d});//result:-1d
String typeError = min(new String[]{"1","3"});//报错

猜你喜欢

转载自blog.csdn.net/sinat_32336967/article/details/100662115