Comparator compare method() int 不能取消引用

use*_*903 3 java int compiler-errors comparator dereference

我正在做一些作业,但遇到了一个问题。

我得到了这个示例代码:

public class PersonNameComparator implements Comparator<Person>{
public int compare(Person p1, Person p2) {
    int retValue = p1.getName().compareTo(p2.getName());
    if (retValue != 0)
        return retValue;
    else if (p1.getAge() < p2.getAge())
        return -1;  
    else if (p1.getAge() > p2.getAge())
        return 1;
    else
        return 0;
}
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时,会发生这种情况:

public class DVDComparator implements Comparator <DVD> {

public int compare(DVD d1,DVD d2)
    {       
     int stars1 = d1.getNoOfStars().compareTo(d2.getNoOfStars());
     //ERROR - int cannot be dereferenced.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Puc*_*uce 5

由于 getNoOfStars() 返回原始 int 并且没有为原始类型定义方法 compareTo(),因此您会收到此错误消息。

如果您使用的是 Java SE 7,则可以使用以下内容:

public class DVDComparator implements Comparator <DVD> {

    public int compare(DVD d1,DVD d2){       
        return Integer.compare(d1.getNoOfStars(), d2.getNoOfStars());
    }
}
Run Code Online (Sandbox Code Playgroud)