我正在构建一个框架,我需要在运行时创建对象的副本,我不想强制这些对象类实现任何接口,如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