我正在构建一个框架,需要在运行时制作对象的副本,并且我不想强制这些对象类实现任何接口,例如Cloneable或Prototype模式或其他任何接口。

因此,为此,我计划使用sun.misc.Unsafe的功能及其方法(allocateInstance(Class cls)copyMemory(Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes))有效地克隆那些对象。但是我找不到任何方法来获取堆空间中对象的大小(以字节为单位)。

我知道我可以使用反射和从一个字段复制到另一个字段。但这并不是没有效率的。
您是否知道获取堆中对象大小的任何方式?还是其他有效复制对象的方式?

最佳答案

坦白地说,正确的方法是使用对象自己的方法,构造函数和工厂来进行复制。 clone严重损坏,没有像这样滥用它。

10-07 18:55
查看更多