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>
。这就是问题所在。
答案 0 :(得分:1)
一种安全的方法是序列化对象,然后反序列化。这确保了一切都是全新的参考。您必须实现Serializable
界面。
Google commons class org.apache.commons.lang.SerializationUtils
通过以下方法为您提供:
SerializationUtils.clone(Object);
示例:
this.myObjectCloned = SerializationUtils.clone(this.object);
答案 1 :(得分:1)
简单:你不能这样做。
除非您知道您将处理/遇到的所有对象都遵循某些规则,例如它们允许序列化。