MyClass不能转换为java.lang.Comparable:java.lang.ClassCastException [英] MyClass cannot be cast to java.lang.Comparable: java.lang.ClassCastException
问题描述
我的项目中的类(简化):
我正在做一个java项目,我遇到这个问题,不知道如何解决它。 p> public class Item {
private String itemID;
私人整数价格;
public Integer getPrice(){
return this.price;
}
}
public class Store {
private String storeID;
private String address;
}
public class Stock {
private Item item;
私人店铺;
private整数itemCount;
public Integer getInventoryValue(){
return this.item.getPrice()* this.itemCount;
}
}
然后我尝试排序一个 ArrayList
的股票,所以我创建另一个类叫$ code> CompareByValue
public class CompareByValue implements Comparator< Stock> {
@Override
public int compare(stock stock1,stock stock2){
return(stock1.getInventoryValue() - stock2.getInventoryValue());
}
}
当我尝试运行程序时,会出现错误:
线程main中的异常java.lang.ClassCastException任何人都知道有什么问题?/ b>
=h2_lin>解决方案
这是因为库存
不实现可比较的
。实现它:
public class库存实现可比较&库存> {
public int compareTo(Stock o){
// ...
}
}
...或将 CompareByValue
的实例作为参数传递给 sort()
方法:
Collections.sort(list,new CompareByValue());
I am doing a java project and I got this problem and don't know how to fix it.
The classes in my project (simplified):
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;
}
}
Then I try to sort an ArrayList
of Stock so I create another class called CompareByValue
public class CompareByValue implements Comparator<Stock> {
@Override
public int compare(Stock stock1, Stock stock2) {
return (stock1.getInventoryValue() - stock2.getInventoryValue());
}
}
When I try to run the program, it gives the error:
Exception in thread "main" java.lang.ClassCastException: Stock cannot be cast to java.lang.Comparable
Anyone know what's wrong?
It's because Stock
isn't implementing Comparable
. Either implement it:
public class Stock implements Comparable<Stock> {
public int compareTo(Stock o) {
// ...
}
}
... Or pass an instance of CompareByValue
as parameter to the sort()
method:
Collections.sort(list, new CompareByValue());
这篇关于MyClass不能转换为java.lang.Comparable:java.lang.ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!