我想知道是否有可能將泛型類型反序列化爲該類型的一個實例。如果可能,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