@Accessors(chain = true) 注解解释
@Accessors(chain = true)
是 Lombok 库中的一个注解,用于简化 Java 类中 getter 和 setter 方法的调用方式。Lombok 是一个 Java 库,它可以自动为你的类生成一些常见的、容易重复的代码,比如构造器、getter 和 setter 方法等。
默认行为
当你在类上使用 @Data
或者 @Getter
和 @Setter
注解时,默认情况下,生成的方法是分开调用的。例如,如果你有一个 User
类,其中有一个 name
属性,那么默认的 getter 和 setter 会像这样:
public class User {
private String name;
// Lombok 自动生成
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
}
当你调用这些方法时,它们是独立的,例如:
User user = new User();
user.setName("John");
String name = user.getName();
使用 @Accessors(chain = true)
但是,如果你希望在调用 setter 时能够链式地继续调用其他 setter 或者其他方法,你可以使用 @Accessors(chain = true) 注解。这将使得 setter 返回 this 对象本身,从而支持链式调用。
例如:
import lombok.Accessors;
@Accessors(chain = true)
public class User {
private String name;
public String getName() { return this.name; }
public User setName(String name) { this.name = name; return this; } // 注意返回类型和 return 语句
}
现在你可以这样调用 setter:
User user = new User()
.setName("John")
.setSomeOtherProperty("value");
请注意,当你设置了 chain = true,setter 方法的返回类型必须是该类本身(例如 User 而不是 void)。Lombok 会自动帮你处理这些细节。