gpt4 book ai didi

java - 如何浅克隆一个没有实现 Cloneable 的实例?

转载 作者:行者123 更新时间:2023-11-29 05:51:41 25 4
gpt4 key购买 nike

我的框架处理任何类的域对象。我需要能够浅克隆这样的域对象实例 foo,就好像它实现了 Cloneable(它没有实现)并且我调用了 Object.clone () 返回一个浅克隆。

不起作用的东西:

  • 强制 foo 的类实现 Cloneable 并因此实现公共(public)方法 clone()
  • 通过反射调用 foo.clone()(到达 protected 方法 Object.clone())。它抛出 CloneNotSupportedException 因为 foo 的类没有实现 Cloneable
  • 序列化和反序列化 foo:我需要一个浅拷贝,而不是深拷贝。

限制:

  • foo 的类在编译时是未知的。
  • foo 可能具有未公开为 getter/setter 的字段。

注意:有几个类似的问题,但似乎没有一个关注于获得浅层克隆。

最佳答案

BeanUtils可以克隆不可克隆的 Bean,只要它们有 setter/getter。遗憾Orika bean mapper 也不支持私有(private)字段的映射。

最后,您可能更容易基于自己的反射实现它(如 hoaz 所建议的),因为大多数用于 bean 映射的库都尝试执行深拷贝,并且您似乎有一些特殊要求(例如作为对复制私有(private)字段的支持)。

关于java - 如何浅克隆一个没有实现 Cloneable 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com