开发者社区> 问答> 正文

Comparable接口的泛型

背景:我现有两个类
一个类是Employee implements Comparable
另一个是Manager extends Employee
现在要写函数,在任意数组中找到最大和最小的存入Pair对象中
public static > Pair minmax(T[] a) {

    if(a == null || a.length != 0) {
        return null;
    }
    T min = a[0];
    T max = a[0];
    for(T aa:a) {
        if(aa.compareTo(min)<0) min = aa;
        if(aa.compareTo(max)>0) max = aa;
    }
    return new Pair<T>(min,max);
}
    如果如下这么调用,就会报错,因为Manager继承Employee实现的是Employee的接口,因此在传参的时候不满足Manager extends Comparable<Manager>
    public static void minmaxBonus(Manager[] a,Pair<? super Manager> result) {
    minmax(a);
}
    请教高手们,我该如何修改才能使得这么调用不报错呢。因为在学习泛型的使用,所以希望用泛型解决问题。不想要编译出警告的

展开
收起
蛮大人123 2016-02-26 14:02:58 2108 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你既然让Employee实现了comparable接口,然后让Manager继承Employee,说明你想让Manager类和Employee使用相同的compareTo的流,那么你的minmaxBonus方法的参数可以改成Employee。
    如果比较流程不同,你需要让Manager也实现Comparable接口,你的minmaxBonus就可以不用变。
    public static void minmaxBonus(Employee[] a,Pair<? super Manager> result) {

        minmax(a);
    }
    
    2019-07-17 18:48:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多