ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

带有“ this”关键字的Java Copy构造函数

2019-11-11 06:11:00  阅读:243  来源: 互联网

标签:constructor this java c-4 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有