我的一个POJO有一个布尔对象字段,允许在数据库中使用NULLS(一个要求).是否可以在类级别使用@Data Lombok批注,但是覆盖布尔字段的getter?它生成的默认值是布尔字段的getXXX方法.我希望将其覆盖为isXXX()?
谢谢,
帕迪
我在我的 java 项目中使用 lombok 库。
@Data
public class Score {
private long grade;
}
Run Code Online (Sandbox Code Playgroud)
通过这段代码,我自动获得了 getter 和 setter。例如
Score score = new Score();
score.setGrade(10);
// when I call score.getGrade(), I get 10.
Run Code Online (Sandbox Code Playgroud)
但现在我想自定义 setter 方法来为等级值引入额外的逻辑。例如
public void setGrade(long grade) {
// so the returned value from getter is always 1 bigger than what has been set.
this.grade += 1;
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想要score.setGrade(10)但score.getGrade()返回 11。这是覆盖设置器。如何使用 lombok 来实现它?
我尝试使用以下代码反序列化我在 API 中收到的 JSON 对象:
ObjectMapper mapper = new ObjectMapper();
ExampleDto ed = mapper.readValue(req.body(), ExampleDto.class);
Run Code Online (Sandbox Code Playgroud)
我的班级使用 Lombok 生成构造函数、getter 和 setter,如下所示:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExampleDto {
private String name = "";
private List<String> values = new LinkedList<>();
}
Run Code Online (Sandbox Code Playgroud)
这两个属性都应该是可选的,如果未提供,则使用类定义中指定的默认值。但是,如果我现在尝试反序列化 JSON
{name: "Foo"}
Run Code Online (Sandbox Code Playgroud)
该values字段是null. 根据我的理解,以及我找到的所有示例代码,values应该是一个空列表。
编辑:不是重复的,因为我使用的是没有 Optionals 的 Lombok
我用 Lombok 进行注释。我需要覆盖其中一个属性的 setter 方法。但这是行不通的。
我已经注释了属性,@Setter(AccessLevel.NONE)然后显式调用setProperty。
下面提到豆子。
@Data
@AllArgsConstructor
@Slf4j
public class TestDto
{
private String code;
@Setter(AccessLevel.NONE)
private String nameCode;
public void setNameCode(String nameCode)
{
log.info(" nameCode {}", nameCode);
this.nameCode = <Call to some method>;
}
}
Run Code Online (Sandbox Code Playgroud)
在其中设置 bean 列表的 DTO。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestViewDto {
private List<TestDto> testDtoList;
.............Few more dto's..............................
}
Run Code Online (Sandbox Code Playgroud)
这是从服务线下调用的..
travelAgentViewDto.setTestDto(repository.findTestNumber(number);
Run Code Online (Sandbox Code Playgroud)
存储库接口定义如下:
public interface Repository extends JpaRepository<Address, AddressPk> {
public List<TestDto> findTestNumber(String number);
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常。唯一的问题是当覆盖它时setNameCode不会进入 setter。
从 …