Java复制构造函数的;这";关键词

Java复制构造函数的;这";关键词,java,c++,constructor,copy,this,Java,C++,Constructor,Copy,This,我有一个关于java的相当普遍的问题。 我想知道是否有一种简单的方法来在java中重建C++代码: class A { public: int first; int second; A(const A& other) { *this = other; } ... } 因此,基本上是一个复制构造函数,您可以在构造函数中传递a的新对象的现有对象,它将复制内容并构建a的现有对象的精确副本 尝试 class A { int first; int seco

我有一个关于java的相当普遍的问题。 我想知道是否有一种简单的方法来在java中重建C++代码:

class A 
{

public:
  int first;
  int second;

  A(const A& other) {
    *this = other;
  }

...
}
因此,基本上是一个复制构造函数,您可以在构造函数中传递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;

      }
     ...
    }
但是我想知道是否有更简单的方法,因为有时候你会有更多的类变量


提前谢谢

> P>你在该类的第三版本中有合法java,它和C++类做的事情一样,但是我认为没有比你写的更容易的方法。 回收代码的最佳方法:

class A {

   int first;
   int second;

   public A(int f, int s){        
      this.first = f;
      this.second = s;
   }

   public A(A a){
      this(a.first, a.second); // id use getters instead ofc.
   }
}

Java语言没有更简单的定义方法,但是有一些技巧可以让您做到这一点:

  • 通过serialization::Premission克隆对象-结构中类的所有属性必须是基元或标记为可序列化的类的属性
  • toString()->fromString(字符串s)-必须实现相应的方法
  • POJO和Bean可以使用中间XML/JSON表示和可用的库(如Jackson等)轻松地重建

  • 据我所知,直接映射之后最有效的方法是通过序列化机制。

    您可以创建一个私有构造函数,该构造函数接收所有变量,并让所有其他构造函数以某种方式调用该变量。您指的是一个构造函数,它接收该对象的实例,然后复制其数据。“这可能是最简单的了。”Daedric解释道——但不必单独复制它的变量。(我在想,在提交问题后是否误用了单词copy构造函数-这会导致混乱吗?)好的,非常感谢,我将看一下序列化!是的,序列化很好,但它比简单的构造函数更复杂。