我想尝试从Long Array中获取Long
值。但我有这个例外:
线程中的异常" main" java.lang.ClassCastException: java.lang.Integer不能强制转换为java.lang.Long
这样的代码:
import java.util.List;
public class Bar {
private List<Long> departments;
public List<Long> getDepartments() {
return departments;
}
public void setDepartments(List<Long> departments) {
this.departments = departments;
}
}
import java.util.List;
import net.sf.json.JSONObject;
public class Foo {
public static void main(String[] args) {
String str = "{\"departments\":[20,22]}";
JSONObject jsonObject = JSONObject.fromObject(str);
Bar bar = (Bar) jsonObject.toBean(jsonObject, Bar.class);
List<Long> departments = bar.getDepartments();
Long depId = departments.get(0);// Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
System.out.println(depId);
}
}
答案 0 :(得分:1)
model: function(params) {
// Why is params not contain the passed parameter value ?
}
这是一个net.sf json强制转换错误,只是强制转换为字符串
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个
Long depId = departments.get(0).longValue();
编辑:
Integer i = 9;
Long l = i.longValue();
System.out.println(i + " " + l);
答案 3 :(得分:0)
Long i = Long.valueOf(departments.get(0).toString());将解决您的问题
答案 4 :(得分:0)
toBean()方法使用List<Integer>
生成不同的类。
由于这个bug,我认为没有任何理由将Integer强制转换为Long。
将部门更改为List<Integer>
或使用另一个JSon Parser。
答案 5 :(得分:0)
JSON本身没有Integer
或Long
的概念,只知道Number
。如果JSONObject不是浮动品脱值,则将数字值或其列表放入Integer
对象中。
您将List声明为List<Long>
的事实与JSONObject无关,因为此泛型类型信息在编译的类代码(类型擦除)中不可用,departments
只是一个对象列表,所以JSONObject很乐意填写Integer对象。
您可以将departments
声明为List<Integer>
或使用其他转换方法(查看ujulu对您帖子的评论)