2017-10-07 137 views
0

警告我想排序收爲自變量的List<MyType>Unckecked方法調用上Collections.sort()

static void doSomething(List<MyType> arg) { 
    Collections.sort(arg); 
} 

...但我得到這樣的警告:

Unchecked method 'sort(List<T>)' invocation 

這裏的MyType

class MyType implements Comparable { 
    private int number; 

    public MyType(int n) { 
     number = n; 
    } 

    public int compareTo(MyType b) { 
     return Integer.compare(number, b.number); 
    } 
} 

我可以禁止這個警告,但我想知道我在做什麼w榮。

+0

您的示例代碼似乎沒有與警告馬赫。請顯示確切的代碼。 – davidxxx

+0

您應該編寫一個能夠重現問題的[MCVE]。 – pvg

+2

這很可能是因爲'MyType'不使用通用的'Comparable '。所以要移除警告只需實現通用的「Comparable」接口。 –

回答

2

@Aominè說得對:MyType實施了Comparable而不是Comparable<MyType>。現在我已經改變了這個警告。

+1

最重要的是,原因是因爲'Collections.sort(列表)'的定義方式是它期望類型參數'T'實現'可比較的'因此當你沒有收到警告時實現通用的「Comparable」接口。 –

+1

請參閱此處的方法的完整定義 - > [** Collections.sort(List )**](https://docs.oracle.com/javase/8/docs/api/java/util/Collections。 HTML#排序java.util.List-) –