2017-04-24 12 views
0

私は彼らの中にクラスはロンボク@Data内部クラスの静的内部クラスのfindバグ・エラーであるべき

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ショーエラーは重要ではありません。私は2つの選択肢がここにあると思います

+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

答えて

0

A)ロンボクは、FindBugsのが正しい

Bで、無効なバイトコードを作成します)FindBugsのは、あなたが今、分解してjavap使用することができ、無効な警告

を与えます犯人を特定するためのクラス。ドキュメントをもっと深く勉強したり、そのツールにバグレポートを書き留めたりすることができます。

関連する問題