无法将 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)
将整数转换为字符串。但是,由于您正在进行比较,您可能应该只将值作为整数进行比较。
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)
将整数转换为字符串。但是,由于您正在进行比较,您可能应该只将值作为整数进行比较。