[英]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.