我有一个这样的方法
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?请帮帮我!非常感谢!
发布于 2013-09-07 01:10:36
您可以将您的方法重构为如下所示:
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);发布于 2013-09-07 01:08:03
您必须创建新的列表并将强制转换的对象添加到新的客户链表中。
LinkedList<Customer> custList = new LinkedList<>();
for(Object obj: getListObjectWithConditionInXMLFile("Customer")) {
custList.add((Customer)obj));
}或者,如果可能的话,最好使用泛型,就像“蜘蛛鲍里斯”在评论中提到的那样。
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);https://stackoverflow.com/questions/18662669
复制相似问题