Java 避免使用诸如';ArrayList';;改用接口(序列化问题)
请注意,这不是“针对接口的程序”类型的问题 我开始避免使用像“ArrayList”这样的实现类型;使用ArrayList时,请在PMD中使用接口。我理解为什么我会得到它,但在这种情况下,我不能使用List,因为List是不可序列化的,但是ArrayLists是Java 避免使用诸如';ArrayList';;改用接口(序列化问题),java,list,serialization,arraylist,interface,Java,List,Serialization,Arraylist,Interface,请注意,这不是“针对接口的程序”类型的问题 我开始避免使用像“ArrayList”这样的实现类型;使用ArrayList时,请在PMD中使用接口。我理解为什么我会得到它,但在这种情况下,我不能使用List,因为List是不可序列化的,但是ArrayLists是 除了停用PMD检查,我还有其他选择吗?解决问题的一个方法是使用泛型,而不是显式指定ArrayList 而不是写: public byte[] doSomething(final ArrayList<?> serializabl
除了停用PMD检查,我还有其他选择吗?解决问题的一个方法是使用泛型,而不是显式指定
ArrayList
而不是写:
public byte[] doSomething(final ArrayList<?> serializableList) {
serializableList.add(getSomeObject()); // List.add()
return SerializationUtils.serialize(serializableList); // Serializable
}
public byte[]doSomething(最终ArrayList serializableList){
serializableList.add(getSomeObject());//List.add()
返回SerializationUtils.serialize(serializableList);//Serializable
}
你可以写:
public <T extends List<?> & Serializable> byte[] doSomething(final T serializableList) {
serializableList.add(getSomeObject()); // List.add()
return SerializationUtils.serialize(serializableList); // Serializable
}
公众不相信这一点。序列化发生在运行时,因此编译时类型实际上并不相关。将写出运行时类型,并反序列化正确的类型。它不是序列化isue。如果实际类型是可序列化的,则没有问题。@BoristheSpider如果什么是二进制的呢?“太早”是什么意思?你在说什么?@Boristeider这一次并不比上次更有趣,那次你一再否认引用官方文件。你现在所做的完全让我失望。请停下来。@EJP我道歉。