2016-06-07 9 views
4

Es scheint, dass @RequiredArgsConstructor im folgenden Code nicht funktioniert. Warum ist es?Lombok: RequiredArgsConstructor funktioniert nicht

import java.io.Serializable; 

import lombok.Data; 
import lombok.RequiredArgsConstructor; 

@Data 
@RequiredArgsConstructor 
public class User implements Serializable { 

    private String username; 

    /*public User(String username) { 
     this.username = username; 
    }*/ 

    private static final long serialVersionUID = 8043545738660721361L; 
} 

ich den Fehler:

javax.faces.el.EvaluationException: java.lang.Error: Unresolved compilation problem: 
    The constructor User(String) is undefined 

Aus irgendeinem Grund scheint es auch für andere Domain-Klasse funktioniert, in dem kein Konstruktor definiert, sondern verwendet, um die @RequiredArgsConstructor Anmerkung.

Antwort

8

Nach Documentation, Erforderliche Argumente sind endgültige Felder und Felder mit Einschränkungen wie @NonNull.

Sie müssen Benutzernamen als @NonNull

@NonNull private String username; 

machen und Sie brauchen, um sie zu endgültig zu machen.

+5

Und 'final' Felder! Vergessen Sie nicht die "endgültigen" Felder. 'Endgültige' Felder bekommen oft nicht viel Liebe (* Wiederholung absichtlich * = D) – Augusto