簡體   English   中英

集合排序泛型類型java

[英]Collections sort generics types java

我一直在尋找我的問題的答案。 我發現了大量相似的主題,但我仍然不知道該怎么做。

我有一個類,我想在排序的ArrayList中存儲對象。

例如,我創建了這個類:

public class Kwadrat implements Comparable<Kwadrat> {

    private int a;

    public Kwadrat(int a){
        this.a = a;
    }

    public int get_size(){
        return a*a;
    }

    public int compareTo(Kwadrat b){
        if(b.get_size() > get_size()){
            return -1;
        }
        if(b.get_size() < get_size()){
            return 1;
        }
        return 0;
    }
}

這是我的Sort類:

public class Sort <T> {
    ArrayList<T> arraylist;

    public Sort(){
        arraylist = new ArrayList<T>();
    }


    public void add(T element){

        arraylist.add(element);

       Collections.sort(arraylist);



    }
}

Collections.sort(arraylist); 仍告訴我“沒有類型變量T實例存在,因此T conforms to Comparable<? super T> ”。

您的Sort類目前在其類型參數T上沒有邊界,因此它可以是任何類型,甚至是不可Comparable的類型。 它會接受Object ,它不是Comparable 因為沒有邊界,並且因為編譯器發現可以傳遞給single-arg Collections.sort方法的邊界,所以存在編譯器錯誤。

您應該在Collections.sort期望的T上創建相同的邊界。

public class Sort <T extends Comparable<T>> {

甚至更好:

public class Sort <T extends Comparable<? super T>> {

T改為T extends Comparable<T> public class Sort <T> { line中的T extends Comparable<T> ,因為該方法需要<T extends Comparable<? super T>> <T extends Comparable<? super T>>參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM