编程语言
首页 > 编程语言> > 带有“ this”关键字的Java Copy构造函数

带有“ 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