我正在构建一个框架,需要在运行时制作对象的副本,并且我不想强制这些对象类实现任何接口,例如Cloneable或Prototype模式或其他任何接口。
因此,为此,我计划使用sun.misc.Unsafe
的功能及其方法(allocateInstance(Class cls)
和copyMemory(Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes)
)有效地克隆那些对象。但是我找不到任何方法来获取堆空间中对象的大小(以字节为单位)。
我知道我可以使用反射和从一个字段复制到另一个字段。但这并不是没有效率的。
您是否知道获取堆中对象大小的任何方式?还是其他有效复制对象的方式?
最佳答案
坦白地说,正确的方法是使用对象自己的方法,构造函数和工厂来进行复制。 clone
严重损坏,没有像这样滥用它。