例外:java.lang.String无法强制转换为java.lang.Integer

时间:2016-03-23 19:57:34

标签: java

我有以下代码:

Integer mRuntime = (Integer) movie.get("runtime");
String movieRuntime;
if(mRuntime == null){
    movieRuntime="*Not Available*";
} else{
    movieRuntime = String.valueOf(mRuntime);
}

在上面的代码中,我试图检查运行时的值,这是一个整数,并尝试将值转换为String,如果它不是NULL。如果它为null我正在向String写一条自定义消息,告诉它它不可用。

但是当我尝试执行代码时,我收到以下消息:

nested exception is java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Integer mRuntime = (Integer) movie.get("runtime");

2 个答案:

答案 0 :(得分:0)

movie.get("runtime")返回String。你想要一个String。你很好。就这样做:

String movieRuntime = movies.get("runtime");
if (movieRuntime == null) {
    movieRuntime = "*Not Available*";
}

答案 1 :(得分:0)

如果存储在密钥runtime下的值不是Integer类型,那么您将始终遇到此ClassCastException。假设电影是Map

,您可以按如下方式重写内容
String movieRuntime;
if (!movies.containsKey("runtime")) {
    movieRuntime="*Not Available*";
} else if (movies.get("runtime") instanceof Integer){
    movieRuntime = String.valueOf(movies.get("runtime"));
}
// add an else case for all the other types