我来自C++世界,我找不到以下的Java替代方案(如果有的话):
struct SomeStruct
{
SomeStruct(){}
SomeStruct(const SomeStruct& rhs)
{
*this = rhs;
}
};
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因是我有一个现有对象的缓存,所以我不想创建另一个实例,只是为了'克隆'现有的实例,如下所示:
public class SomeObject
{
private static Hashtable _objects;
SomeObject()
{
SomeObject obj = _objects.get(some_key);
if (obj != null) {
// *this = obj;
// instead of:
// this.something = obj.something;
// this.something1 = obj.something1;
// this.something2 = obj.something2;
// a zillion fields....
}
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:
对不起,我混淆了一些事情(仍然需要学习Java和C++).
谢谢
最接近Object.clone()但首先阅读Effective Java的相关部分.
如果删除了一些要求,可能有更简单的方法可以做你想要的.例如,如果使对象不可变,则不需要将数据复制到另一个对象中.相反,您可以返回对原始对象的引用.这比成员副本快得多,并且还有许多其他好处,例如使编写线程安全的代码更容易.
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |