java - 应该是一个静态内部类,在 Lombok @Data 内部类上找到 bug 错误

标签 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?

Should be a static inner class This class is an inner class, but does not use its embedded reference to the object which created it.  This reference makes the instances of the class larger, and may keep the reference to the creator object alive longer than necessary.  If possible, the class should be made static.

并显示这一行:

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

我知道日期是可变的并重写类:

@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 显示错误并不重要。

最佳答案

我认为这里有两个选择:

A) Lombok 创建了无效的字节码,那么 findbugs 是正确的

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

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

关于java - 应该是一个静态内部类,在 Lombok @Data 内部类上找到 bug 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43579427/

相关文章:

java - 在异构环境中是否推荐使用hibernate?

java - java 如何从实例字段获取对象?

java - 事件处理程序,定义和访问参数(java Swing Netbeans)

java - 适用于 JSF、Java 和 hibernate 框架的良好代码审查工具

java - FindBugs 说我需要 "use a prepared statement"?如何?

java - Lombok 不会在 hybris 自定义组件中生成 getter

java - Android API 级别 8 从特定文件夹中获取最后拍摄的照片

java - 可能无法清理 java.sql.ResultSet 、 Statement。清理资源的义务并未解除

java - 错误 ClientBuilder() is not public in com.company.entities.Client.ClientBuilder;无法从外部包访问

java - 如何获取 IntelliJ 警告的 @SuppressWarnings 警告名称?