我正在寫一個工具,需要從字節數組中獲取java.io.Serializable
的實例。
困難在於「真正的」類不是(也不能是......)在類路徑上(我不會解釋爲什麼在這裏..)。下面
的代碼失敗的is.readObject()
有ClassNotFoundException
因爲實現類是不是在classpath
問:
是有可能做到這一點?通過反思?通過使用Unsafe
?通過使用子類ClassLoader
?要麼...?如何在沒有類路徑上的實現類的情況下反序列化「序列化」實例?
byte[] data = ...
try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));) {
Object o = ois.readObject();
Serializable s = (Serializable)o;
}
*是否可以實現這一點?*不是沒有實施。是的,你可以寫一個'ClassLoader'來加載'class'。但是,然後你又回到了需要這門課。 –
同上Eliott說的。 Java序列化只發送一個類的數據,而不是類本身(不是數據的方法或定義)。沒有課堂,你就沉沒了。 – markspace
我想知道爲什麼downvotes ...問這樣的問題是「壞」?或誘使其他用戶出錯?或者給一個虛假的激光?我不這麼認爲。 – titou10