我正在構建一個框架,我需要在運行時創建對象的副本,我不想強制這些對象類實現任何接口,如Cloneable或Prototype模式,或其他任何東西。有效克隆未知的對象不支持克隆
因此,爲此,我計劃使用sun.misc.Unsafe
及其方法allocateInstance(Class cls)
和copyMemory(Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes)
的功能有效地克隆這些對象。但我無法找到任何方式在堆空間中獲取字節大小的對象。
我知道我可以使用反射和從字段複製到字段。但這並非沒有效率。 你知道在堆中獲取對象大小的任何方式嗎?或者其他有效複製對象的方式?
您不能複製任意對象。這樣做可能是危險的。你想做什麼? – SLaks 2012-03-07 17:11:19
你可能會傷害自己! – Zaki 2012-03-07 17:18:47
我想在運行時複製一個對象,並且在編譯時我沒有任何有關該對象的信息。我不能強迫它實現任何接口,也不能提供任何工廠或其他任何東西。 – 2012-03-07 18:00:24