java - 将 LinkedList<Object> 转换为 LinkedList<Customer>

标签 java generics casting

我有一个这样的方法

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 ? 请帮助我 !非常感谢!

最佳答案

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

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);

关于java - 将 LinkedList<Object> 转换为 LinkedList<Customer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18662669/

相关文章:

java - Java 中的 Collections.checkedList() 调用是什么?

java - 在 Android 中将嵌套的 Class<MyInterface<T>> 作为参数传递

c++ - 取消引用从线程返回的指针导致;段错误 : 11

java - ClassCastException 问题

java - 为什么要使用 getter 和 setter/accessors?

java - 如何确定哪个菜单项称为 ActionListener?

c# - 根据类型调用DAL方法

java.lang.ClassCastException 套接字 readObject

java - GCP 数据存储模拟器无法安装在 OpenJDK 10 上

java - 防止 Java 7/8 采样声音在播放时发出咔嗒声(适用于 6)