MyClass无法强制转换为java.lang.Comparable:java.lang.ClassCastException

use*_*225 8 java sorting exception comparable classcastexception

我正在做一个java项目,我遇到了这个问题,不知道如何解决它.

我项目中的类(简化):

public class Item {

    private String itemID;
    private Integer price;

    public Integer getPrice() {

        return this.price;

    }

}

public class Store {

    private String storeID;
    private String address;

}

public class Stock {

    private Item item;
    private Store store;
    private Integer itemCount;

    public Integer getInventoryValue() {

        return this.item.getPrice() * this.itemCount;

    }  
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试对ArrayList股票进行排序,以便创建另一个名为的类CompareByValue

public class CompareByValue implements Comparator<Stock> {

    @Override
    public int compare(Stock stock1, Stock stock2) {

        return (stock1.getInventoryValue() - stock2.getInventoryValue());

    }
Run Code Online (Sandbox Code Playgroud)

}

当我尝试运行该程序时,它会给出错误:

线程"main"中的异常java.lang.ClassCastException:Stock无法强制转换为java.lang.Comparable

谁知道什么是错的?

Ósc*_*pez 12

这是因为Stock没有实施Comparable.实现它:

public class Stock implements Comparable<Stock> {
    public int compareTo(Stock o) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

...或者将CompareByValueas参数的实例传递给sort()方法:

Collections.sort(list, new CompareByValue());
Run Code Online (Sandbox Code Playgroud)