应龙目岛@Data内部类静态内部类的发现错误错误

问题描述:

我有类应龙目岛@Data内部类静态内部类的发现错误错误

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显示错误不要紧。

+1

忽略它。又一个FindBugs错误。 FindBug的作者请注意,'静态内在'是一个矛盾的术语,而'保持参考......活着'是完全没有意义的。请注意你自己的班级是静态的,而不是内在的。 – EJP

+0

“请注意,你的班级是静态的,而不是内在的。”我的CrmOpioLogFilter里面包含SomeClass – user5620472

+1

无关紧要。它被声明为静态的。内部类是一个嵌套类,它不*声明为'static'。资料来源:[JLS#8.1.3](https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.1.3)。 – EJP

我认为有两个选择:

A)龙目岛创建无效的字节码,然后FindBugs的是正确的

B)FindBugs的为您提供了一个无效的警告

您现在可以使用javap的拆解你的课程确定罪魁祸首。然后再深入研究文档,或者写一个错误报告给该工具。