类型 Student 不是有界参数 <T extends Comparable<?类型为 InsertionSort<T> 的 super T>>

问题描述

public interface Insertion <T extends Comparable<? super T>>{

    public void Sort(T[] ArrayToSort);
    
    public void Sort(T[] ArrayToSort,Comparator<T> Comparator);
    
    public void Reverse(T[] ArrayToSort);
    
    public void Reverse(T[] ArrayToSort,Comparator<T> Comparator);
    
    
    
    public static Comparator<String> IgnoreCase = new Comparator<String>() {
        @Override
        public int compare(String object1,String object2) {
            return object1.comparetoIgnoreCase(object2);
        }
        
        
    };
}

课程

public final class InsertionSort<T extends Comparable<? super T>> implements Insertion<T> {


    public void Sort(T[] a) {
        if(a.length <1 || a == null) {
            return;
        }
        
        for(int i=0;i<a.length;i++) {
            for(int j=i;j>0;j--) {
                if(a[j].compareto(a[j-1])<0) {
                    exchange(a,j,j-1);
                }
                else break;
            }
        }
        
    }

    private void exchange(T[] a,int Index_1,int Index_2) {
        
        T temp = a[Index_1];
        a[Index_1]=a[Index_2];
        a[Index_2] = temp;
        
    }

    @Override
    public void Sort(T[] a,Comparator<T> Comparator) {
        if(a.length <1 || a == null) {
            return;
        }
        
        for(int i=0;i<a.length;i++) {
            for(int j=i;j>0;j--) {
                if(Comparator.compare(a[j],a[j-1])<0) {
                    exchange(a,j-1);
                }
                else break;
            }
        }
        
    }
    
    

    @Override
    public void Reverse(T[] a) {
        if(a.length <1 || a == null) {
            return;
        }
        
        for(int i=0;i<a.length;i++) {
            for(int j=i;j>0;j--) {
                if(a[j].compareto(a[j-1])>0) {
                    exchange(a,j-1);
                }
                else break;
            }
        }
        
    }

    @Override
    public void Reverse(T[] a,Comparator<T> Comparator) {
        
            if(a.length <1 || a == null) {
                return;
            }
            
            for(int i=0;i<a.length;i++) {
                for(int j=i;j>0;j--) {
                    if(Comparator.compare(a[j],a[j-1])>0) {
                        exchange(a,j-1);
                    }
                    else break;
                }
            }
        
    }
    

}

演示课

@SuppressWarnings("rawtypes")
public class Student implements Comparable{

    Integer Id;
    String name;
    Double Salary;
    
    
    
    public Integer getId() {
        return Id;
    }


    public void setId(Integer id) {
        Id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public Double getSalary() {
        return Salary;
    }


    public void setSalary(Double salary) {
        Salary = salary;
    }


    public Student(Integer iD,String name,Double salary) {
        this.Id = iD;
        this.name = name;
        this.Salary = salary;
    }


    @Override
    public String toString() {
        return "Student [Id=" + Id + ",name=" + name + ",Salary=" + Salary + "]";
    }
    
    
    
    
    public static Comparator<Student> SortByName = new Comparator<Student>() {

        @Override
        public int compare(Student object1,Student object2) {
            return object1.name.compareto(object2.name);
        }
    };
    public static Comparator<Student> NameIgnoreCase = new Comparator<Student>() {

        @Override
        public int compare(Student object1,Student object2) {
            return object1.name.comparetoIgnoreCase(object2.name);
        }
    };
    public static Comparator<Student> SortBySalary = new Comparator<Student>() {

        @Override
        public int compare(Student object1,Student object2) {
            return object1.Salary.compareto(object2.Salary);
        }
    };
    
    
    
    
    
    
    public static void main(String[] args) {
    
        Student student_1 = new Student( 9581081,"Bdfad",43242.00);
        Student student_2 = new Student( 9581082,"Vomkmksjd",56566.00);
        Student student_3 = new Student( 9581083,"Pkewyda",564643.00);
        Student student_4 = new Student( 9581084,"rgsdfger",534134.00);
        Student student_5 = new Student( 9581085,"ljldjfdfd",5652656.00);
        Student[] studentList = {student_1,student_2,student_3,student_4,student_5};
        List<Student> studentList_1 = new ArrayList<Student>();
        studentList_1.add(student_1);
        studentList_1.add(student_2);
        studentList_1.add(student_3);
        studentList_1.add(student_4);
        studentList_1.add(student_5);
        
        Insertion<Student> insertion_str = new InsertionSort<Student>();
        insertion_str.sort(studentList,SortBySalary);
        for(Student student:studentList_1) {
            System.out.println(student.getName());
        }
    }


    @Override
    public int compareto(Object o) {
        // Todo Auto-generated method stub
        return 0;
    }

}

enter image description here

错误:绑定不匹配:学生类型不是有界参数的有效替代 的 super T>>

代码有什么问题

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...