@Accessors(chain = true) 返回类型与void不兼容
时间: 2023-11-21 18:52:45 浏览: 49
@Accessors(chain = true) 是一个Lombok注解,它的作用是让setter方法返回当前对象而不是void。这样做的好处是可以支持链式调用,例如:new Student().setName("zhang").setXXX("xxx").setXXXX("XXX")。如果不加@Accessors(chain = true),则setter方法默认返回void类型,与链式调用不兼容。
相关问题
@Accessors(fluent = true) 与 @Accessors(chain = true) 的区别
`@Accessors(fluent = true)` 和 `@Accessors(chain = true)` 都是 Lombok 注解,用于简化 Java 类的 getter 和 setter 方法的编写。它们的区别在于:
`@Accessors(fluent = true)` 会生成没有 `get` 或 `set` 前缀的 getter 和 setter 方法,这样可以使代码更加简洁易读。例如,如果一个属性名为 `name`,使用 `@Accessors(fluent = true)` 注解后,生成的 getter 方法名为 `name()`,setter 方法名为 `name(String name)`。
`@Accessors(chain = true)` 会生成返回对象本身的 setter 方法,这样可以实现链式调用。例如,如果一个属性名为 `age`,使用 `@Accessors(chain = true)` 注解后,可以使用链式调用的方式设置属性值,例如 `user.setAge(31).setName("pollyduan")`。
下面是一个示例代码,演示了 `@Accessors(fluent = true)` 和 `@Accessors(chain = true)` 的用法:
```java
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(fluent = true)
public class User1 {
private Integer id;
private String name;
private Integer age;
}
@Data
@Accessors(chain = true)
public class User2 {
private Integer id;
private String name;
private Integer age;
}
public class Test {
public static void main(String[] args) {
User1 user1 = new User1().id(1).name("pollyduan").age(31);
System.out.println(user1.name()); // 输出:pollyduan
User2 user2 = new User2().setId(1).setName("pollyduan").setAge(31);
System.out.println(user2.getName()); // 输出:pollyduan
}
}
```
@Accessors(chain = true) @Data
@Accessors(chain = true)是Lombok库中的一个注解,它可以用于简化Java类的getter和setter方法的编写。当我们在一个类上使用@Accessors(chain = true)注解时,它会自动生成链式调用的setter方法,使得我们可以在一个语句中连续调用多个setter方法。
下面是一个示例代码,演示了@Accessors(chain = true)的使用:
```java
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class Person {
private String name;
private int age;
private String address;
}
public class Main {
public static void main(String[] args) {
Person person = new Person()
.setName("John")
.setAge(25)
.setAddress("123 Main St");
System.out.println(person.getName()); // 输出:John
System.out.println(person.getAge()); // 输出:25
System.out.println(person.getAddress()); // 输出:123 Main St
}
}
```
在上面的示例中,我们使用@Accessors(chain = true)注解在Person类上,然后我们可以在创建Person对象时使用链式调用的方式设置属性值。这样可以使代码更加简洁和易读。