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)
...或者将CompareByValue
as参数的实例传递给sort()
方法:
Collections.sort(list, new CompareByValue());
Run Code Online (Sandbox Code Playgroud)