我有一个列表,我正在尝试添加一些Custom Class类型的成员。
List<MyCustomClass> myList = new ArrayList<MyCustomClass>();
myList.addAll(queryResponse.getRecords());
实际上queryResponse
又是一个有2个成员的自定义类;
private Long totalRecords;
private List<T> records;
我的问题是,我想将myList
(即queryResponse.getRecords()
)的个别成员投放到MyCustomClass
。
执行查询后,它们在运行时的类型为“Object”。
我该怎么做?
答案 0 :(得分:0)
假设queryResponse.getRecords()
返回Object
,您可以像这样输入caste
myList.addAll((MyCustomClass)queryResponse.getRecords());
答案 1 :(得分:0)
myList.addAll((List)queryResponse.getRecords());
应该有效,产生类型安全警告。 通过这样做,您可以绕过编译时类型安全保证,因此您可以确保以后不会在某处获得ClassCastException。
答案 2 :(得分:0)
怎么样:
List<MyCustomClass> myList = new ArrayList<MyCustomClass>();
for (Object element : queryResponse.getRecords()) {
if (element instanceof MyCustomClass) {
// this will never fail because of the check above
myList.add((MyCustomClass)element);
}
else {
// do something here in case element has the wrong type
System.err.println("Found incompatible record!");
}
}
这使用instanceof
运算符来确保强制转换不会失败。当对象类型不兼容时,您所做的事情取决于您的要求。