寻找简洁的复制构造函数实现(java)

寻找简洁的复制构造函数实现(java),java,copy-constructor,Java,Copy Constructor,对于2个变量,可以在复制构造函数块中写入语句。但是对于一个有多个变量的情况,有人能帮我知道怎样才能得到类似的结果吗?我尝试使用它,但结果是一个最终变量 class Obj { int a, b; Obj(int a, int b) {this.a = a; this.b =b;} Obj(Obj obj1) //trying to copy every variable by concise logic here //instead of wr

对于2个变量,可以在复制构造函数块中写入语句。但是对于一个有多个变量的情况,有人能帮我知道怎样才能得到类似的结果吗?我尝试使用它,但结果是一个最终变量

class Obj
{
    int a, b;

    Obj(int a, int b)
    {this.a = a; this.b =b;}

    Obj(Obj obj1)
    //trying to copy every variable by concise logic here
    //instead of writing for each and every variable
    {a = obj1.a; b = obj1.b;} 
}

class CopyObj2 
{
    public static void main(String[] args) 
    {
        Obj obj1 = new Obj(5,10);
        System.out.println("Obj1\t"+obj1.a+", "+obj1.b);
        Obj obj2 = new Obj(obj1);
        System.out.println("Obj2\t"+obj2.a+", "+obj2.b);
    }
} 

没有本机方法可以做到这一点-唯一的方法是手动指定字段值,就像您所做的那样

作为一个助手—您可以尝试使用—如果您的类是bean,那么JavaBean映射框架可以工作

我试着用这个,但结果是最后一个变量

这是对对象的引用。你不能给他分配另一个值——这根本没有意义。

复制构造函数用于java的AWT词干点、矩形、多边形和其他几何类。通常在有许多对象的情况下

对于具有最终字段的不可变类,不需要复制构造函数

可变类的经验让我倾向于建议切换到不可变类。 使用复制构造函数,最终需要大量复制或共享内部数据,如数组或列表。代码样式不是很好

完整性:

克隆也可以作为复制构造函数的替代品,但由于它的开销,它正逐渐失去人们的青睐

然后还有复制的序列化,它仍然在大量使用,但不应该在这里使用


还有什么不适用于您显示的代码?您可以使用Lombok。看看这个注释:在java中,不像C++,没有默认的拷贝构造函数——你必须复制所有字段。如果您使用的是eclipse,那么您可以从仍然不是您所需要的成员变量自动生成构造函数,尽管您可能会使用反射框架。但是,除非你处理的是,比如说,50个或更多的成员字段,否则我怀疑它至少在代码行数方面会比仅仅写出单个赋值更简洁。@Lino我没有说这件事不起作用,我在寻找一种替代方法来减少多个复制语句