我的项目中的类(简化):
我正在做一个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
发布评论