Java 用泛型搜索数组中的最大元素

Java 用泛型搜索数组中的最大元素,java,generics,Java,Generics,任务: 编写一个泛型方法来查找列表范围[begin,end]中的最大元素 答复: public final class Algorithm { public static <T extends Object & Comparable<? super T>> T max(List<? extends T> list, int begin, int end) { T maxElem = list.get(begin

任务:

编写一个泛型方法来查找列表范围[begin,end]中的最大元素

答复:

public final class Algorithm {
    public static <T extends Object & Comparable<? super T>>
        T max(List<? extends T> list, int begin, int end) {

        T maxElem = list.get(begin);

        for (++begin; begin < end; ++begin)
            if (maxElem.compareTo(list.get(begin)) < 0)
                maxElem = list.get(begin);
        return maxElem;
    }
}
公共最终类算法{

公共静态问题:
公共静态之间的区别我假设这里有两个问题:

  • 为什么需要边界
    对象

  • 为什么要使用
    可比性我不明白“我可以使用哪些类型?”你的问题的一部分。你可以使用任何扩展可比接口的类型,否则它不能保证有
    compareTo
    函数。@Boristeider是的,只要阅读你提供的链接并删除我的评论……我每天都会学到一些新的东西为什么否决?这是一个好问题,它甚至会让经验丰富的Java开发人员感到困惑@Boristeider:我认为这可能是一个好问题。但是,现在我认为它的表达不是特别清楚(“我可以使用哪些类型?”甚至是什么意思?)[顺便说一句,我没有投反对票。]
    public static <T extends Comparable<T>> 
        T max(List<? extends T> ar, int begin, int end) { ... }
    
    public class A implements Comparable<A> {}
    
    public class B extends A {}
    
    class Employee implements Comparable<Employee> { }
    
    class PartTimeEmployee extends Employee { }
    
    T extends Comparable<? super T>
    
    class PartTimeEmployee extends Employee implements Comparable<PartTimeEmployee>
    
    compareTo(PartTimeEmployee)
    compareTo(Employee)
    
    compareTo(Object)
    compareTo(Object)