有没有一种方法可以自动分配Java中的所有属性?

时间:2019-06-05 11:01:29

标签: java constructor instantiation

假设User类具有很多属性,我想复制到复制构造函数中的另一个实例。有没有避免手动为每个字段编写作业的捷径?

例如:

public class User {
    private Integer field1;
    private Integer field2;
    private Integer field3;
    private Integer field4;
    private Integer field5;
    private Integer field6;
    private Integer field7;
    private Integer field8;
    private Integer field9;
    private Integer field10;
    private Integer field11;
    private Integer field12;
    private Integer field13;
    // and more others fields here

    public User(User other) {
        this.field1 = other.field1;
        // eleven fields here
        this.field13 = other.field13;
        // and more others fields here
    }
}

2 个答案:

答案 0 :(得分:2)

不,你不能。

您应该使用复制构造函数。

将所有变量从参数“ user”复制到“ this”的所有变量。

答案 1 :(得分:0)

这里:

this = user;

完全无效。但是,这里是:

this.user = user;

您必须了解自己处于“属于”某个对象的方法的主体中。在方法主体内,您可以使用this访问该“拥有”对象。然后,您可以使用this.someField来寻址该拥有对象的字段。要么读取该字段,要么写入该字段。

但是如前所述:该代码在“属于”拥有对象的方法中运行。因此,不可能(也没有意义)尝试从“所有权”方法中“更改”该所有者。

您可能正在寻找的是副本构造函数,有关简单示例,请参见here