应该是一个静态的内部类,在Lombok @Data内部类中查找bug错误

时间:2017-04-24 03:40:53

标签: java findbugs lombok

我有课

class SomeClass{

}

其中包含静态嵌套类:

@Data
public static class CrmOpioLogFilter {
    private Date fromDate;
    private Date toDate;
    private List<String> filterCrmGroupIds;
    private String msisdn;
    private List<CrmUser> crmUsers;
    private List<OperationType> operationTypes;
    private List<OpioLogState> states;
}

找错误说错误:

Should SomeClass$CrmOpioLogFilter be a _static_ inner class?
  

应该是一个静态内部类这个类是一个内部类,但确实如此   不要使用它对创建它的对象的嵌入式引用。这个   引用使类的实例更大,并可以保持   引用创建者对象的时间超过必要时间。如果   可能,这个课应该是静态的。

并显示以下内容:

1 @Data
2 private Date fromDate;
3 private Date toDate;

我知道Date是可变的并且重写了类:

@Data
    public static class CrmOpioLogFilter {
        @Setter(AccessLevel.NONE)
        @Getter(AccessLevel.NONE)
        private Date fromDate;
        @Setter(AccessLevel.NONE)
        @Getter(AccessLevel.NONE)
        private Date toDate;
        private List<String> filterCrmGroupIds;
        private String msisdn;
        private List<CrmUser> crmUsers;
        private List<OperationType> operationTypes;
        private List<OpioLogState> states;

    public void setFromDate(Date fromDate) {
        this.fromDate = new Date(fromDate.getTime());
    }

    public void setToDate(Date toDate) {
        this.toDate = new Date(toDate.getTime());
    }

        public Date getFromDate() {
            return new Date(fromDate.getTime());
        }

        public Date getToDate() {
            return new Date(toDate.getTime());
        }
    }

但是findbug显示错误并不重要。

1 个答案:

答案 0 :(得分:0)

我认为这里有两种选择:

A)Lombok创建无效的字节码,然后findbugs是正确的

B)findbugs给你一个无效的警告

您现在可以使用javap来反汇编您的类以识别罪魁祸首。然后更深入地学习文档,或者写一个错误报告给该工具。