2017-03-15 18 views
1

Ich baue gerade eine Java-Anwendung und verwende Lombok-Annotationen, um Standardwerte zu reduzieren. Ich stoße jedoch auf Probleme, wenn ich die @Singular und @NonNull Annotationen zusammen benutze. Zum Beispiel schauen wir uns die folgende Beispiel-Klasse aussehen:NonNull-Listenelemente mit Lombok

@Builder 
class Classroom { 

    @Singular @NonNull 
    private List<String> students; 
} 

würde ich die @NonNull Annotation wie vom Hinzufügen null Elementen zu schützen einzeln, etwa so:

Classroom.builder() 
    .student("Sally") 
    .student("Joe") 
    .student(null) 
    .build(); 

Aber auch bei der Anmerkung: Das Element null wird immer noch zur Liste hinzugefügt, wenn das Objekt Classroom erstellt wird. Gibt es einen einfachen Weg, Lombok-Annotationen zu verwenden, um einzelne Elemente als NonNull zu markieren, oder muss ich die Annotationen löschen und diese Art von Schutz selbst implementieren?

+0

Ich nehme an, die '@ NonNull' Annotation bedeutet, dass die' Student' Liste selbst nicht null sein kann. Nicht, dass einzelne Elemente nicht null sein können. – Brendan

+0

Ich bin mir bewusst, dass die Anmerkung bedeutet, dass die Liste nicht "null" sein kann; Ich hatte gehofft, es würde sich auch auf die einzelnen Elemente selbst erstrecken. – Thomas

Antwort

0

Nach dem Lombock documentation:

Sie können auf dem Parameter einer Methode oder Konstruktor @NonNull haben lombok für Sie ein Null-check-Anweisung generieren.

Also muss man auf dem Parameter der student Methode (in der Builder-Klasse) und nicht auf dem privaten Bereich students (im Klassenzimmer Klasse), um die @NonNull Anmerkung setzen.

public student(@NonNull String name){ 
    students.add(name); 
}