如何在不知道Java中的确切类型的情况下克隆对象?

时间:2018-05-27 16:02:31

标签: java object clone

public void test(Object obj){`
      Object newObj = obj;//reference

}

如果不知道obj的确切类型,我怎么能克隆它像某些东西一样 Object newObj = obj.clone();Object newObj = new Object(obj);

实际情况是:在课程Message中,我设置了一个成员HashMap<String,Object>,允许任何想要使用Message的人添加其他属性/成员而不是重写它。对象可能是ArrarList<Integer>。这就是问题所在。

2 个答案:

答案 0 :(得分:1)

一种安全的方法是序列化对象,然后反序列化。这确保了一切都是全新的参考。您必须实现Serializable界面。

Google commons class org.apache.commons.lang.SerializationUtils通过以下方法为您提供:

SerializationUtils.clone(Object);

示例:

this.myObjectCloned = SerializationUtils.clone(this.object);

答案 1 :(得分:1)

简单:你不能这样做。

除非您知道您将处理/遇到的所有对象都遵循某些规则,例如它们允许序列化。