我得到像这样的例外:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
int idStation = Integer.parseInt((String) Stations.get(0));
此行正在施放异常。我做了很多次这样的事情并且很好。 “Stations”是一个ArrayList。
答案 0 :(得分:2)
如果您有ArrayList<Object>
,则需要将值设为字符串才能调用Integer.parseInt
。
转换为String
实际上并没有将对象更改为String
:它只是对编译器说“信任我,我知道这个引用实际上是String
”。因此,如果它已经是String
的实例,它将仅在运行时工作。
toString
方法是获取对象的字符串表示的一般方法。所以,在调用parseInt
之前调用它:
Integer.parseInt(Stations.get(0).toString())
如果Stations.get(0)
已经是Integer
,那就太浪费了。但为了回报这种浪费,你会得到普遍性。你可以检查对象是否是Number
;你需要权衡它的冗长程度与它可能提供或不提供的任何效率改进:
Object station = Stations.get(0);
int idStation = (station instanceof Number) ?
((Number) station).intValue() :
Integer.parseInt(station.toString();