【发布时间】:2019-10-20 21:17:11
【问题描述】:
假设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
}
}
【问题讨论】:
-
不,没有。
this不是变量,而是关键字。你想达到什么目标? -
如何让你的同事骂你的名字:定义一个名为
thıs的变量。 -
你应该把你的属性放在指定的子类或容器中,把属于的东西组合在一起。然后你只需要“复制”一个装满容器的手,而不是几十个字段。拥有这么多字段通常只是表明设计不佳。
-
不,但是您可以编写一个接受用户的构造函数。然后,您将使用传入的用户对象中的所有字段调用您拥有的构造函数。
-
您可以使用 Lombok 或 Immutables 等库来生成复制构造器/构建器。
标签: java constructor instantiation