我有以下代码:
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");
答案 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