2017-04-24 3 views
0

Ich habe KlasseSollte eine statische innere Klasse Fund Fehler Fehler auf Lombok @data innere Klasse sein

class SomeClass{ 

} 

und statische verschachtelte Klasse in ihnen:

@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; 
} 

Und Fehler sagen Fehler finden:

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.

Und zeigen diese Zeilen:

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

Ich weiß, Datum wandelbar ist und umschreiben Klasse:

@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()); 
     } 
    } 

Aber findbug zeigen Fehler spielt keine Rolle.

+1

Ignorieren Sie es. Noch ein FindBugs Bug. Könnten die Autoren von FindBug beachten, dass "statisch inner" ein Widerspruch in sich ist, und dass "den Bezug lebendig halten" ist völlig bedeutungslos. Und beachte bitte, dass deine Klasse statisch ist, nicht innerlich. – EJP

+0

"Und bitte beachten Sie, dass Ihre Klasse statisch ist, nicht innerlich." Mein CrmOpioLogFilter enthält in SomeClass – user5620472

+1

Irrelevant. Es wird als statisch deklariert. Eine innere Klasse ist eine verschachtelte Klasse, die * nicht * als statisch deklariert ist. Quelle: [JLS # 8.1.3] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.1.3). – EJP

Antwort

0

Ich denke, es gibt zwei Möglichkeiten hier:

A) Lombok schafft ungültig Bytecode, dann findbugs korrekt ist

B) findbugs gibt Ihnen eine ungültige Warnung

Sie jetzt javap verwenden können, zerlegen Ihre Klassen, um den Schuldigen zu identifizieren. Um dann die Dokumentation eingehender zu studieren oder vielleicht einen Fehlerbericht zu diesem Tool zu schreiben.

Verwandte Themen