当前位置: 首页 > 知识库问答 >
问题:

MyClass不能强制转换为java.lang.Comparable:java.lang.ClassCastException

壤驷华辉
2023-03-14

我正在做一个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;

    }  
}
public class CompareByValue implements Comparator<Stock> {

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

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

    }

}

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

线程“main”java.lang.ClassCastException中出现异常:无法将Stock强制转换为java.lang.Comparable

有人知道怎么了吗?

共有1个答案

汪建白
2023-03-14

这是因为stock没有实现comparable。要么实现它:

public class Stock implements Comparable<Stock> {
    public int compareTo(Stock o) {
        // ...
    }
}

...或将CompareByValue的实例作为参数传递给sort()方法:

Collections.sort(list, new CompareByValue());
 类似资料: