![](/img/trans.png)
[英]Lombok does not create getter and setter methods after using @Data
[英]How to override Lombok Setter methods
我在我的項目中使用@Setters
並在 POJO 類之上使用@Setters
和@Getters
注釋生成Setters
和Getters
。 我正在嘗試覆蓋屬性的 setter 方法,但它不起作用
我想檢查 JSON 屬性是 Empty 還是 Null 我想在 Setter 方法中設置默認值
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString
public class DefaultModel {
private String name;
@Setter(AccessLevel.NONE)private String age;
public void setAge(String age) {
if(age==null||age.trim().isEmpty()||age.equals("null")) {
this.age="10";
}else {
this.age=age;
}
}
}
工作場景:
{
"name":"some",
"age":null
}
{
"name":"some",
"age":"null"
}
{
"name":"some",
"age":" "
}
失敗場景:
{
"name":"some"
}
輸出:
DefaultModel(name=some, age=null)
我也在這里將其作為參考,但到目前為止還沒有運氣
要么你只是遇到了一個我從未見過的錯誤,要么你測試錯了。
像這樣的注釋
@Setter(AccessLevel.NONE) private String age;
在字段級別上確實會阻止生成 setter。 但是鑒於您正在定義一個 setter,您甚至不需要它。 顯式@Setter
停止生成。
我剛剛使用 Eclipse 4.7.3a 和 Lombok 1.18.0 嘗試了您的示例,並且您的(有問題的)setter 被調用。 幾年來我一直在使用 Lombok,從未遇到過這樣的錯誤。
最有可能的問題是您的 JSON 反序列化器根本不使用 setter。 我猜,你正在測試類似的東西
DefaultModel defaultModel = deserialize("{\"name\":\"some\"}", DefaultModel.class);
而不是直接測試setter。 這就是問題所在。
JSON 反序列化器可能使用 Lombok 生成的構造函數(不是 setter)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.