带有“ this”关键字的Java Copy构造函数
作者:互联网
这个问题已经在这里有了答案: > How do you make a deep copy of an object in Java? 17个
> Building a copy constructor in Java 1个
我对Java有一个相当普遍的问题.
我想知道是否有一种简单的方法可以在Java中重新创建此C代码:
class A
{
public:
int first;
int second;
A(const A& other) {
*this = other;
}
...
}
因此,基本上是一个复制构造函数,您可以在其中传递A的现有对象到构造函数中的a的新对象,它将复制内容并构建A的现有对象的精确副本.
试
class A {
int first;
int second;
public A(A other){
this = other;
}
...
}
可悲的是,它不起作用,因为eclipse告诉我,赋值的左侧不允许“ this”,因为它不是变量.
我知道我会做到以下相同的结果:
class A {
int first;
int second;
public A(A other){
this.first = other.first;
this.second = other.second;
}
...
}
但是我想知道是否有更简单的方法,因为有时您会有更多的类变量.
提前致谢!
解决方法:
Java语言没有定义更简单的方法,但是有些棘手的技术可以使您做到这一点:
>通过序列化克隆对象:http://www.avajava.com/tutorials/lessons/how-do-i-perform-a-deep-clone-using-serializable.html:前提条件-结构中该类的所有属性都必须是原始属性或标记为Serializable的类的所有属性
> toString()-> fromString(String s)-必须实现相应的方法
>使用中间的XML / JSON表示形式以及可用的库(例如Jackson等),可以轻松地重建POJO和bean.
据我所知,直接映射后最有效的方法是通过序列化机制.
标签:constructor,this,java,c-4,copy 来源: https://codeday.me/bug/20191111/2018032.html