Java 使用泛型的序列化

Java 使用泛型的序列化,java,object,serializable,Java,Object,Serializable,下面是一段用于序列化对象但使用泛型的代码。 执行此方法时没有创建.ser文件。我确信我在这里遗漏了一些重要的泛型概念。请帮帮我 public <T> void saveToDisk(List<T> objectlist) { // TODO Auto-generated method stub System.out.println(path); if ("domain_pojo.Customer".equals(objectlist.getClas

下面是一段用于序列化对象但使用泛型的代码。 执行此方法时没有创建.ser文件。我确信我在这里遗漏了一些重要的泛型概念。请帮帮我

public <T> void saveToDisk(List<T> objectlist) {
    // TODO Auto-generated method stub
    System.out.println(path);
    if ("domain_pojo.Customer".equals(objectlist.getClass().getName()))
        file = "/customer.ser";
    else if ("domain_pojo.Employees"
            .equals(objectlist.getClass().getName()))
        file = "/employee.ser";
    else if ("domain_pojo.Orders".equals(objectlist.getClass().getName()))
        file = "/order.ser";

    try {
        FileOutputStream fos = new FileOutputStream(path + file);
        // Create ObjectOutputStream to write object
        ObjectOutputStream objOutputStream = new ObjectOutputStream(fos);
        // Write object to file
        System.out.println("Size of objectlist is :" + objectlist.size());
        // objectlist.add(null);
        for (T obj : objectlist) {
            objOutputStream.writeObject(obj);
            objOutputStream.reset();
        }
        objOutputStream.close();
    } catch (IOException e) {
        new FileParsingException(e, e.getMessage());
    }
}
public void saveToDisk(List objectlist){
//TODO自动生成的方法存根
System.out.println(路径);
if(“domain_pojo.Customer”.equals(objectlist.getClass().getName()))
file=“/customer.ser”;
else if(“域_pojo.Employees”
.equals(objectlist.getClass().getName())
file=“/employee.ser”;
else if(“domain_pojo.Orders”.equals(objectlist.getClass().getName()))
file=“/order.ser”;
试一试{
FileOutputStream fos=新的FileOutputStream(路径+文件);
//创建ObjectOutputStream以写入对象
ObjectOutputStream ObjectJoutPutStream=新的ObjectOutputStream(fos);
//将对象写入文件
System.out.println(“objectlist的大小为:“+objectlist.Size()”);
//objectlist.add(空);
对于(对象:对象列表){
objOutputStream.writeObject(obj);
objOutputStream.reset();
}
objOutputStream.close();
}捕获(IOE异常){
新的FileParsingException(e,e.getMessage());
}
}
if(“domain_pojo.Customer”.equals(objectlist.getClass().getName()))

此行始终为false(与其他IF块的情况相同),并且
objectlist.getClass()
的值始终为java.util.List

您应该传递
类clazz
,并在比较中使用它


另一方面,最好让类实现一些返回文件名的接口方法,而不是像这样硬编码。

在哪里声明了“file”,如果这三个条件都失败了,它的值是多少?+1,但如果您大声提到“Type Erasure”,可能会更好;)