相关疑难解决方法(0)

Lombok如何为Boolean对象字段自定义getter?


我的一个POJO有一个布尔对象字段,允许在数据库中使用NULLS(一个要求).是否可以在类级别使用@Data Lombok批注,但是覆盖布尔字段的getter?它生成的默认值是布尔字段的getXXX方法.我希望将其覆盖为isXXX()?

谢谢,
帕迪

lombok

42
推荐指数
3
解决办法
4万
查看次数

使用Lombok库,但如何自定义/重写setter方法

我在我的 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 来实现它?

java lombok

5
推荐指数
1
解决办法
1万
查看次数

Jackson 反序列化默认值缺失

我尝试使用以下代码反序列化我在 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

java jackson lombok deserialization json-deserialization

4
推荐指数
1
解决办法
4252
查看次数

在 lombok 之后未调用覆盖 Setter 方法

我用 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。

从 …

java setter lombok spring-boot

0
推荐指数
1
解决办法
313
查看次数