首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将LinkedList<Object>转换为LinkedList<Customer>

将LinkedList<Object>转换为LinkedList<Customer>
EN

Stack Overflow用户
提问于 2013-09-07 00:46:27
回答 2查看 2.6K关注 0票数 1

我有一个这样的方法

代码语言:javascript
复制
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;
}

在此之后,我调用此方法并希望强制转换:

代码语言:javascript
复制
LinkedList<Customer> lstCustomer = (LinkedList<Customer>()) getListObjectWithConditionInXMLFile("Customer");

但它不能施展。如何从LinkedList转换为LinkedList?请帮帮我!非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2013-09-07 01:10:36

您可以将您的方法重构为如下所示:

代码语言:javascript
复制
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参数,您可以返回正确类型的列表。

你可以这样称呼它

代码语言:javascript
复制
List<Customer> l = getListObjectWithConditionInXMLFile(Customer.class);
票数 1
EN

Stack Overflow用户

发布于 2013-09-07 01:08:03

您必须创建新的列表并将强制转换的对象添加到新的客户链表中。

代码语言:javascript
复制
LinkedList<Customer> custList = new LinkedList<>();
for(Object obj: getListObjectWithConditionInXMLFile("Customer")) {
   custList.add((Customer)obj));
}

或者,如果可能的话,最好使用泛型,就像“蜘蛛鲍里斯”在评论中提到的那样。

代码语言:javascript
复制
 public static <T> LinkedList<T> getListObjectWithConditionInXMLFile(Class<T> requiredClass)

该定义可以如下所示,由"micha“给出。

代码语言:javascript
复制
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;
}

然后,您可以调用

代码语言:javascript
复制
LinkedList<Customer> custList = getListObjectWithConditionInXMLFile(Customer.class);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18662669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档