背景:我现有两个类
一个类是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);
}
请教高手们,我该如何修改才能使得这么调用不报错呢。因为在学习泛型的使用,所以希望用泛型解决问题。不想要编译出警告的
你既然让Employee实现了comparable接口,然后让Manager继承Employee,说明你想让Manager类和Employee使用相同的compareTo的流,那么你的minmaxBonus方法的参数可以改成Employee。
如果比较流程不同,你需要让Manager也实现Comparable接口,你的minmaxBonus就可以不用变。
public static void minmaxBonus(Employee[] a,Pair<? super Manager> result) {
minmax(a);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。