无法将 class java.lang.Integer 转换为 class java.lang.String

Cannot cast class java.lang.Integer to class java.lang.String


    public int compareTo(ListItem item) {
        if(item!=null) {
            return ((String) super.getValue()).compareTo((String) item.getValue());
        }

我的程序基于抽象 class 概念。

我该如何解决这个问题 java.lang.ClassCastException: 在我的程序中?

你应该使用parseInt()

这样的方法

例如:

int xInteger = Integer.parseInt(someString);

您收到异常的原因是整数 class 和字符串 class.

之间没有父子关系

在 Java 中进行转换不会神奇地将数据从一种类型转换为另一种类型。相反,它告诉 Java 存储在变量中的对象实际上 一些其他类型,这在处理继承或接口时很有用。有关详细信息,请参阅 this Whosebug question

在这种情况下,您从 item.getValue() 获得的值是一个整数。尝试转换为 String 不会也不能工作,因为它不是 String。它确实是一个 Integer,尝试对其调用 String 方法是行不通的。

正如其他人提到的,您可以使用 Integer.toString(someInteger) 将整数转换为字符串。但是,由于您正在进行比较,您可能应该只将值作为整数进行比较。