寻找简洁的复制构造函数实现(java)
对于2个变量,可以在复制构造函数块中写入语句。但是对于一个有多个变量的情况,有人能帮我知道怎样才能得到类似的结果吗?我尝试使用它,但结果是一个最终变量寻找简洁的复制构造函数实现(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
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我没有说这件事不起作用,我在寻找一种替代方法来减少多个复制语句