我有这样的方法
public static LinkedList<Object> getListObjectWithConditionInXMLFile(String className){
LinkedList<Object> lstObj = new LinkedList<Object>();
if(className.equals("Customer")){
//read Data from XML File
Customer customer = ...;
lstObj.add(customer);
}
....
return lstObj;
}
之后我调用此方法并想要转换:
LinkedList<Customer> lstCustomer = (LinkedList<Customer>()) getListObjectWithConditionInXMLFile("Customer");
但它无法施放。 如何从LinkedList转换为LinkedList? 请帮助我 !非常感谢!
答案 0 :(得分:1)
您可以将方法重构为以下内容:
public static <E> LinkedList<E> getListObjectWithConditionInXMLFile(Class<E> type){
LinkedList<E> lstObj = new LinkedList<E>();
if (type.equals(Customer.class)) {
Customer customer = ...
lstObj.add((E)customer);
}
return lstObj;
}
通过使方法通用并传递Class
参数,您可以返回正确类型的列表。
你可以这样称呼
List<Customer> l = getListObjectWithConditionInXMLFile(Customer.class);
答案 1 :(得分:0)
您必须创建新的List并将已铸造的对象添加到Customer的新链接列表中。
LinkedList<Customer> custList = new LinkedList<>();
for(Object obj: getListObjectWithConditionInXMLFile("Customer")) {
custList.add((Customer)obj));
}
或者,如果可能的话,最好在评论中使用“Boris the Spider”中提到的泛型。
public static <T> LinkedList<T> getListObjectWithConditionInXMLFile(Class<T> requiredClass)
“micha”给出的定义如下。
public static <T> LinkedList<T> getListObjectWithConditionInXMLFile(Class<T> requiredClass){
LinkedList<T> listObj = new LinkedList<>();
if (requiredClass.equals(Customer.class)) {
Customer customer = /*...*/
listObj.add((T)customer);
}
return listObj;
}
然后,你可以打电话给
LinkedList<Customer> custList = getListObjectWithConditionInXMLFile(Customer.class);