2017-02-17 39 views
0

我得到一個int不能被解除引用錯誤,我不知道如何解決它解除引用。使用ArrayList的INT不能在錯誤的Java

public class ComparatorYearLevel implements Comparator<CourseDomain> { 
    @Override 
    public int compare(CourseDomain one, CourseDomain two) { 
     return one.getYearLevel().compareTo(two.getYearLevel()); 
    } 
} 
+0

你能告訴我們這一年水平的含義是什麼,它可以採取什麼樣的值呢?我們應該如何在邏輯上比較它們? –

+0

你getYearLevel可能會返回原始的不是一個對象作爲使用'compareTo'方法 –

回答

0

這裏有一個選項:

@Override 
public int compare(CourseDomain one, CourseDomain two) { 
    int a = one.getYearLevel(); 
    int b = two.getYearLevel(); 
    return a > b ? 1 : a < b ? -1 : 0; 
} 

你也可以返回此:

return Integer.compare(a, b); 

但三元表達式應該有更好的表現。

延伸閱讀:compareTo with primitives -> Integer/int

+0

謝謝你只能comapare對象其產生這個錯誤!整數解析工作! –

-1

您的問題是one.getYearLevel()正在恢復int。由於這不是一種對象類型,因此無法對其調用方法。

你可以寫

return Integer.valueOf(one.getYearLevel()).compareTo(two.getYearLevel()); 

這明確地轉換你的intInteger,在其上可以調用compareTo方法。

另一種方法是隻寫

return one.getYearLevel() - two.getYearLevel(); 

滿足的compareTo要求,提供的int值不夠大冒險整數溢出。