我想知道是否有可能将泛型类型反序列化为该类型的一个实例。如果可能,Java是否考虑了泛型类型的自定义反序列化(如果有的话)?反序列化泛型(但可序列化)类型
在我的情况,我想实现由它包含的元素的序列化格式的文件支持的列表,并需要从一个byte []实例化一个泛型类型,如:
class FileBackedList<V extends Serializable> implements List<V> {
// ...
public V get(int index) {
byte[] value = readFromFile(index);
// ???????
// I'm pretty certain this doesn't work
return (V)(new ObjectInputStream(new ByteArrayInputStream(value)).readObject());
}
private byte[] readFromFile(int index) {
// read bytes at line 'index'
}
}
这种类型的东西可以工作吗?
编辑:如果它确实工作,我肯定会调用类型V的正确的readObject(ObjectInputStream in),如果它有一个自定义的?
顺便说一下,我不想序列化整个列表。
你试过了吗? – skaffman 2010-10-19 16:45:43
只需修复编译错误(实现'List'或扩展'ArrayList'并且'ByteArrayInputStream'没有'readObject()'方法)并尝试一下。 – BalusC 2010-10-19 16:47:34
skaffman:不,因为我还没有序列化表单的文件。即使它可以工作,我想知道是否将使用默认的readObject(),或者如果定义了自定义的一个(现在编辑该问题以说明),将调用V的(通用类型)readObject。 BalusC:更正了那些现在实现List的拼写错误,并添加了缺失的括号,以便调用OIS.readObject()。 – AshirusNW 2010-10-19 16:52:37