2017-04-24 17 views
0

나는 그들 클래스롬복 @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 쇼 오류가 중요하지 않습니다.

A) 롬복가 잘못 바이트 코드를 생성 한 후 findbugs이

B 올바른) findbugs 당신에게 이제 분해은 javap 사용할 수 있습니다

잘못된 경고를 제공합니다

+1

무시하십시오. 또 다른 FindBugs 버그. FindBug의 저자는 '정적 인 내부'는 모순이며, '참조를 유지 ... 살아있다'는 것은 전혀 의미가 없음을 알 수 있습니까? 그리고 당신의 수업은 내부가 아닌 정적이라고주의하십시오. – EJP

+0

"클래스가 내부가 아닌 정적 인 것을 유의하십시오." 내 CrmOpioLogFilter에는 SomeClass – user5620472

+1

이 포함되어 있지 않습니다. 그것은 정적으로 선언됩니다. inner 클래스는'static'으로 선언되지 않은 * 중첩 클래스입니다. 출처 : [JLS # 8.1.3] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.1.3). – EJP

답변

0

나는이 두 여기에 선택이 생각 범인을 식별 할 수있는 수업. 그런 다음 문서를 더 깊이 연구하거나 해당 도구에 버그 보고서를 작성하십시오.