【问题标题】:Lombok annotation @Getter for boolean field用于布尔字段的 Lombok 注释 @Getter
【发布时间】:2017-07-25 23:45:36
【问题描述】:

我正在使用 Java lombok 注释 @Getter 为我的 POJO 生成 getter。我有一个名为 isAbcboolean 字段。

在这种情况下,@Getter 注释会生成一个名为 isAbc() 的方法。它不应该生成一个名为isIsAbc()的方法吗?

【问题讨论】:

标签: java lombok


【解决方案1】:

阅读龙目岛页面https://projectlombok.org/features/GetterSetter.html上的“小字”部分

对于以 开头的布尔字段,后面紧跟一个 标题大小写字母,没有任何前缀来生成 getter 名称。

所以你遇到的行为是指定的。

注意booleanBoolean 的行为是不同的:

@Getter
private boolean isGood; // => isGood()

@Getter
private boolean good; // => isGood()

@Getter
private Boolean isGood; // => getIsGood()

【讨论】:

  • @serghey-bishyr 您应该编写自己的答案,而不是扩展现有答案。
  • @dit 我的答案与现有答案没有什么不同,只是增加了一些注释。
  • 在这些情况下二传手怎么办
  • @whishky 对于 setter,“is”前缀被忽略。这意味着私有布尔值 isGood; // => setGood()
  • @SergiiBishyr 感谢您改进答案。这绝对是正确的方法。
【解决方案2】:

如果名称已经以is 开头后跟一个大写字母,如isGood,则Lombok 不会以is 为前缀。

您可能会遇到像 canDelete 这样的名称,但有些挫败感会生成名称为 isCanDelete 的 getter。为避免这种情况,您可以使用fluent 参数,如下所示:

@Getter(fluent = true)
private boolean canDelete;

或(取决于版本):

@Getter
@Accessors(fluent = true)
private boolean canDelete;

在这种情况下,它将保持原样。

【讨论】:

    【解决方案3】:

    我对lombok(1.16.8)做了一些测试,结论如下。

    private Boolean good;
    
    getter => getGood()              Boolean
    setter => setGood(Boolean good)  void 
    
    
    private boolean good;
    
    getter => isGood()               boolean
    setter => setGood(boolean good)  void 
    
    
    private Boolean isGood;
    
    getter => getIsGood()            Boolean
    setter => setIsGood()            void 
    
    
    private boolean isGood;
    
    getter => isGood()               boolean
    setter => setGood(boolean good)  void
    

    【讨论】:

      猜你喜欢
      • 2017-03-15
      • 1970-01-01
      • 2017-03-11
      • 2016-05-26
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      相关资源
      最近更新 更多